首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3维数组打印地址经过两次尊重?

3维数组打印地址经过两次尊重?
EN

Stack Overflow用户
提问于 2014-09-23 16:55:34
回答 2查看 115关注 0票数 0

为什么一个3D数组在被取消引用两次之后要打印地址?请帮助我理解下面发布的代码(假设数组从1002位置开始)。

代码语言:javascript
复制
int main()
{
   int a[2][3][4]={
                   {
                     1,2,3,4,
                     4,5,6,7,
                     9,1,1,2
                   },
                   {
                     2,1,4,7,
                     6,7,8,9,
                     0,0,0,0
                   }
                 };

   printf("%u %u %u %u\n",a,*a,**a,***a); //a == *a == **a, all print address 1002. Why? 

}

EN

回答 2

Stack Overflow用户

发布于 2014-09-23 17:03:18

a的类型为array of size 2 of arrays of size 3 of arrays of size 4 of int

*a的类型为array of size 3 of arrays of size 4 of int

**a的类型为array of size 4 of int

这三个数组在转换到相应指针时都具有相同的值,因为它们指向内存中的相同位置。

票数 1
EN

Stack Overflow用户

发布于 2014-09-23 17:02:43

尝试以下代码:

代码语言:javascript
复制
int main()
{
    int a[2][3][4]={
            {
                {1,2,3,4},
                {4,5,6,7},
                {9,1,1,2}
            },
            {
                {2,1,4,7},
                {6,7,8,9},
                {0,0,0,0}
            }
            };

    printf("%u %u %u u%",a,*a,**a,***a);//how a == *a == **a print address 1002 please help me to understand ? 

}

返回地址的原因是你根本没有正确地声明你的3d数组。以上是经过修正的代码,试一试,让我们知道它是如何进行的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26000609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档