为什么在二维数组中 a 和 *a 指向相同的地址? [复制]

2024-05-05

我只是想了解二维数组是如何实现的以及内存分配是如何发生的。所以我对给定的 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 enter image description here


2D 数组与第一个 1D 数组位于相同的地址,而第一个 1D 数组又与第一个元素位于相同的地址。就是这样,没有什么其他的了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在二维数组中 a 和 *a 指向相同的地址? [复制] 的相关文章

随机推荐