1、大小不同,
指针在32位平台4字节,在64位平台8字节,
数组为: sizeof(arr)/sizeof(arr[0])
2、访问权限不同
数组名永远指向数组的开头元素,不能移动,指针p的值可以发生改变
arr++ ; //error
p++; //correct
3、访问方式不同
数组和指针在很多情况下可以互换,例如 : arr[i]==*(arr+i) arr[i] 是在数组名完后偏移i个单元格,然后取值
*(p+i)=p[i] 把p的值先加i,然后再跳到该地址上取值
扫描二维码关注公众号,回复:
2444501 查看本文章
例:
void main()
{
int brr[10]={1,2,3,4,5,6,7};
int *p=&brr[3];
printf("%d","%d",sizeof(arr),sizeof(p));
printf("%d","%d",p[-1],brr[1]);
printf("%d","%d",*(p+2),*(brr+2));
return 0;
}