我只是想了解二维数组是如何实现的以及内存分配是如何发生的。所以我对给定的 c 程序有些疑问,为什么 a 和 *a 给出相同的地址。
#include<stdio.h>
main()
{
int i,j;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",*(*(a+i)+j));
}
printf("\n");
}
printf("%d\n",a);
printf("%d\n",a[0]+1);
printf("%d\n",a[0][0]);
printf("%d\n",a+1);
printf("%d\n",*a);
}
and here's the output
2D 数组与第一个 1D 数组位于相同的地址,而第一个 1D 数组又与第一个元素位于相同的地址。就是这样,没有什么其他的了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)