<span style="font-size:18px;">#include<stdio.h>
#include<stdlib.h>
void main()
{
int a[5] = {1,3,5,7,9};
int *p = a;//指向元素的指针
int (*pa)[5] = &a;//指向数组的指针
printf("%x,%x",a,&a);
printf("\n%d,%d",sizeof(*a),sizeof(*(&a)));
printf("\n%d,%d",sizeof(*p),sizeof(*pa));
getchar();
}</span>
当看到 a与&a打印出来的地址是一样的时候,我就猜测 sizeof(*a)与sizeof(*(&a))是一样的,都是指向数组第一个元素。
结果打印的结果是:4,20
原来 *(&a)与*pa一样都是指向数组的指针,*p是指向元素的指针,两者是有区别的。在c里面 不能因为起始地址一样的,就认为指针操作的结果是一样的,这是一个误区。