三维数组???
本帖最后由 yixinwenxin 于 2021-4-9 09:31 编辑#include <stdio.h>
int main()
{
char array = {
{
{'1', '2', '3', '4', '5'},
{'q', 'w', 'e', 'r', 't'},
{'a', 's', 'd', 'f', 'g'}
},
{
{'z', 'x', 'c', 'v', 'b'},
{'6', '8', 'y', 'i', 'o'},
{'7', '9', 'u', 'p', 'h'}
}
};
printf("%c%c%c%c\n", *(*(*array + 1) + 2), *(*(*(array + 1) + 1) + 2), ***array, *(**array + 1));
return 0;
}
结果:E,Y,1,2
三维:*(*(*(array + 1) + 1) + 2)
(【组】【行】【列】)
用一维来计算的话 总字符数÷组 x 要去到的第几组 -1
30 ÷2组 =每组15 x (2-1) =15
15 ÷3行 =每列5 x (2-1) =5
5列 + 3列= 8 因为从0 开始 所以还要减一 ??? 是这么理解的吗?
把array当成一个指针或者array来看.
可以帮你解决第一个怎么来的,后面的你可以参照,学习得多想
*array指向是中的第一个大数组(1的地址)
{
{'1', '2', '3', '4', '5'},
{'q', 'w', 'e', 'r', 't'},
{'a', 's', 'd', 'f', 'g'}
}
**array指向是中数组
{'1', '2', '3', '4', '5'}
***array指向是中的数
'1'
//=========================================
*array + 1看成array + 1,array 指向的是大数组的首地址,所以+1直接中数组+1指向'q'(q的地址)
{
{'1', '2', '3', '4', '5'},
{'q', 'w', 'e', 'r', 't'},
{'a', 's', 'd', 'f', 'g'}
}
*(*array + 1) + 2)把第一代入+2就等于'q'+2等于指向'e'(e的地址)
最后在把地址中的数据*,就得到了所指向的数据
页:
[1]