yixinwenxin 发表于 2021-4-9 00:47:32

三维数组???

本帖最后由 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 开始 所以还要减一 ???                是这么理解的吗?

2736946915 发表于 2021-4-10 11:35:07

把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]
查看完整版本: 三维数组???