鱼C论坛

 找回密码
 立即注册
查看: 3528|回复: 1

三维数组???

[复制链接]
发表于 2021-4-9 00:47:32 | 显示全部楼层 |阅读模式
2鱼币
本帖最后由 yixinwenxin 于 2021-4-9 09:31 编辑

#include <stdio.h>

int main()
{
        char array[2][3][5] = {
                {
                        {'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 开始 所以还要  减一 ???                是这么理解的吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-10 11:35:07 | 显示全部楼层
把array当成一个指针或者array[0]来看.
可以帮你解决第一个怎么来的,后面的你可以参照,学习得多想

*array指向是[2]中的第一个大数组(1的地址)
{
                        {'1', '2', '3', '4', '5'},
                        {'q', 'w', 'e', 'r', 't'},
                        {'a', 's', 'd', 'f', 'g'}
}

**array指向是[3]中数组
{'1', '2', '3', '4', '5'}

***array指向是[5]中的数
'1'
//=========================================
*array + 1看成array[0] + 1,array[0] 指向的是大数组的首地址,所以+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的地址)

最后在把地址中的数据*,就得到了所指向的数据

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 05:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表