从名字上听起来这个int (*p)[n]是个指针,那么肯定跟int *p[n]是有区别的
下面,先看看我的练习代码:
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define LEN sizeof(a)/sizeof(int)
int main()
{
int a[]={1,2,3,4};
int (*p)[LEN];
p=&a;
printf("a:%d\n",a);
printf("&a:%d\n",&a);
int i;
for(i=0;i<LEN;i++)
printf("%d \t",*(*p+i));
return 0;
}
执行结果如下:
大家看,这个例子也是把数组a的元素依次打印出来,我有一个问题留给大家:
既然 a和&a的地址一样,为何只能p=&a;这样赋值,而不可以p=a呢?
答案:
a代表一个整形的地址 &a 代表的是数组长度为4的整形的 首地址 虽然地址是同一个 ,但是数据类型不同,所以赋值会出错