为什么一个3D数组在被取消引用两次之后要打印地址?请帮助我理解下面发布的代码(假设数组从1002位置开始)。
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? }
发布于 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。
这三个数组在转换到相应指针时都具有相同的值,因为它们指向内存中的相同位置。
发布于 2014-09-23 17:02:43
尝试以下代码:
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数组。以上是经过修正的代码,试一试,让我们知道它是如何进行的。
https://stackoverflow.com/questions/26000609
复制相似问题