C语言数组地址问题
发布网友
发布时间:2022-04-26 17:38
我来回答
共2个回答
热心网友
时间:2023-10-18 02:14
解释如下:
&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;
}
热心网友
时间:2023-10-18 02:15
首先a[3][4]的地址是&a[3][4]
然后再回答你接下来的问题:
我设置了a[10][10]的数组
根据这个可以看出&a ,*a, a都表示第一个这个数组的首地址
a[0]表示a[0]这一行的首地址
*a[0],表示这一行的首值
a[2],&a[2]表示a[2]行的首地址
&a[2][2]表示a[2][2]的地址