理解指针和数组

pie*_*okr 2 c arrays pointers

有人可以解释如何通过它的名称引用数组,通过在其名称前加上指针和双指针,如下面的代码所示:

#include<stdio.h>

main()
{  
    int a[3][2];
    a[0][0]=15;
    a[0][1]=150;
    a[1][0]=115;
    a[1][1]=165;
    a[2][0]=135;
    a[2][1]=139;
    printf( "%u\n", a);
    printf( "%u\n", *a);
    printf( "%u\n", **a);
}
Run Code Online (Sandbox Code Playgroud)

Ola*_*che 5

第一个

printf("%u\n",a);
Run Code Online (Sandbox Code Playgroud)

打印地址a,该地址与第一个元素的地址相同.

第二个

printf("%u\n",*a);
Run Code Online (Sandbox Code Playgroud)

取消引用a并给出第一个"行"的地址a

第三个

printf("%u\n",**a);
Run Code Online (Sandbox Code Playgroud)

取消引用指向第一个"行"的指针,a并给出该二维数组中第一个元素的值.

当你打开警告编译你的例子时,编译器就会抱怨并告诉你一些你使用的类型.当您将指针作为参数printf指定时,您应该使用格式说明符%p

printf("%p\n",a);
printf("%p\n",*a);
Run Code Online (Sandbox Code Playgroud)

格式说明符%u适用于unsigned int,如果有int,则使用说明符更好%d

printf("%d\n",**a);
Run Code Online (Sandbox Code Playgroud)