数组地址与指针之间的区别与联系
#include <stdio.h>
void main()
{
char a[2][3];
char *b;
char c[5];
b=c;
printf("addr of arr:\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n%p\n"
,a,a+1,&a,&a+1,a[0],a[0]+1,&a[0],&a[0]+1,&a[0][0],&a[0][0]+1);
printf("addr of ptr:\n%p\n%p\n%p\n%p\n%p\n",c,&c,&c[0],b,&b);
}
运行结果:
分析:
1)a、&a、a[0]、&a[0]、&a[0][0]都代表2维数组a[2][3]的首地址,但是地址加1的步长有区别。
2)b是指针变量,&b是指存放指针的地址!!b是指向数组c的首地址,两者不同。