答案:B
解析:
a是数组首元素的地址,a+1的步长是int,所以是2
&a是数组的首地址,&a+1步长是int[5]
ptr是int类型的指针,指向a数组的尾后位置,ptr-1的步长是int,所以是a数组的最后一个元素5
答案:B
解析:
int(*p)[4];------ptr为指向含4个元素的一维整形数组的指针变量(是指针)
int *p[4];-------定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
int(*)[4];--------实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)
答案:D
解析:
- 首先*s[10] 是一个指针数组,s 是一个含有10个指针的数组,故可以这样来看这条声明语句:假设 p 等价于 s[10],声明语句变为 int (*p)(int);
- 观察 int (*p)(int), 从名字开始,p前面有一个 * ,因此 p 是指针,有侧是形参列表,表示p指向的是函数,在观察左侧,函数返回的是 int;
- 则 int (*p)(int) 解读为:函数指针,指向一个 int func(int param) 的函数;
- 故 int (*s[10])(int) :解读为:函数指针数组,每个指针指向一个 int func(int param)的函数。