#include<stdio.h>
int main()
{
int a[6]={1,2,3,4,5,6};
printf("a的地址%p\n",a);//a代表a[0]的地址也是a的首地址
printf("a[0]的地址%p\n",&a[0]);//a[0]的地址
return 0;
}
在一维数组中a和a[0]的地址相同,a和&a[0]的都代表a[0]的地址,&a代表整个数组a的地址
#include<stdio.h>
int main()
{
int b[3][3]={{1,2,3},{10,20,30},{11,22,33}};
//b,&b[0],&b[0][0]三者地址相同,代表含意不同
printf("b的地址%p,&b的地址%p,b[0]的地址%p,b[0][0]的地址%p\n",b,&b,&b[0],&b[0][0]);
//b代表b[0]的地址,b+1向前移动整个b[0]的范围到b[1]
printf("b的地址%p,b+1的地址%p\n",b,b+1);//移动了12bit
//&b代表b数组整体,&b+1将整个向前移动一个数组b的范围
printf("&b的地址%p,b+1的地址%p\n",&b,&b+1);//&b+1移动了36bit
//&b[0]代表b[0]整体,&b[0]+1将向前移动b[0]所占字节的位置
printf("&b[0]的地址%p,&b[0]+1的地址%p\n",&b[0],&b[0]+1);//&b[0]移动了12bit
//&b[0][0]代表b[0][0]的整体,&b[0][0]将向前移动b[0][0]所占字节的位置
printf("&b[0][0]的地址%p,b[0][0]+1的地址%p\n",&b[0][0],&b[0][0]+1);//移动了4bit
return 0
}
二维数组中:b,&b,&b[0],&b[0][0]四者地址相同,代表含意不同
b代表b[0]的地址
&b代表存放整个b数组地址的地址
&b[0]代表b[0]的地址
&b[0][0]代表b[0][0]的地址
所以四者+1移动的字符位数不同
标签:代表,int,地址,数组,printf,移动 From: https://blog.csdn.net/2401_83827692/article/details/140225912