一个关于c语言指针的问题

2025-05-18 07:54:12
推荐回答(2个)
回答1:

#include

int main(void)
{
        int a[10][10] = {5};

        printf(" %p \n %p \n %p \n", a+0, *(a+0), *(*(a+0)));

        printf(" %p \n %p \n %p \n", a, *(a), *(*(a)));

        printf("+++++++++++++++\n");
        printf("&a[0][0] %p \n", &a[0][0]);
        printf(" a[0][0] %p \n", a[0][0]);

        return 0;
}

a是二维数组的名字,存放的就是第一个数字的首地址。二维数组名字的使用

参见:http://tech.163.com/05/0823/11/1RR94CAS00091589.html

回答2:

二维数组相当于一个一维数组里面的元素都是一维数组;二维数组名也相当于一个二级指针。一维数组:*a=a[0]; 二维数组: **a=*a[0]=a[0][0];通俗点写就是a=&a[0], a[0]=&a[0][0],因为&a[0]==&a[0][0] ,所以a于*a指向同一个地址&a[0][0],则**a==a[0][0]