c语言数组地址指向首元素吗?

Python026

c语言数组地址指向首元素吗?,第1张

C语言数组名,就是数组的首地址.

数组的首地址,就是首元素地址.

所以

C语言数组地址指向首元素是正确的.

int

a[N]

a的值

就是&a[0]

解释如下:

&a,*a,a,a[0]——都表示的是数组第0行第0个元素的地址;

*a[0]——这个特殊,表示第0行第0个元素的地址的地址;

a[2],&a[2]——都表示第2行第0个元素的地址;

&a[2][2]——表示第2行第2个元素的地址;

详见图片,我已经把数组中主要元素的地址和值都打印出来了,数组中对应的每个元素的地址写出来了,对照的找下对应元素的位置,应该能理解&a,*a,a,a[0],*a[0],a[2],&a[2],&a[2][2]是什么意思了

#include <stdio.h>

#include <stdlib.h>

int main()

{

    int a[3][4] = {

            {1,2,3,4},

            {5,6,7,8},

            {9,10,11,12},

            }

    printf("&a十六进制地址是%p,十进制是%d\n",&a,&a) //数组名,a[3][4]

    printf("*a十六进制地址是%p,十进制是%d\n",*a,*a)

    printf("a十六进制地址是%p,十进制是%d\n",a,a)

    printf("a[0]十六进制地址是%p,十进制是%d\n",a[0],a[0])

    printf("*a[0]十六进制地址是%p,十进制是%d\n",*a[0],*a[0])

    printf("a[2]十六进制地址是%p,十进制是%d\n",a[2],a[2])

    printf("&a[2]十六进制地址是%p,十进制是%d\n",&a[2],&a[2])

    printf("&a[2][2]十六进制地址是%p,十进制是%d\n",&a[2][2],&a[2][2])

    printf("数组a[3][4]首元素a[0][0]的地址是%p,首元素a[0][0]的值=:%d\n",&a[0][0],a[0][0])

    printf("数组a[3][4]首元素a[2][0]的地址是%p,首元素a[2][0]的值=:%d\n",&a[2][0],a[2][0])

    printf("数组a[3][4]首元素a[2][2]的地址是%p,首元素a[2][2]的值=:%d\n",&a[2][2],a[2][2])

    printf("一个int整型变量占的字节是:%d",sizeof(int))

    return 0

}