void f3(int(*p)[4]);
int a[4]={1,2,3,4},
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
下面哪一个调用是非法的?
- 正确答案: B 你的答案: C (错误)
- f3(&a);
- f3(b[1]);
- f3(&b[1]);
- f3(b);
解析:
选B。根据题目结合选项来看考察的是对函数的传参调用,其中参数涉及到数组指针 。
void f3(int(*p)[4]); 其参数是数组指针 ,指向数组p的指针。
选项A:f3(&a); 参数为一个地址,符合指针定义。
选项B:f3(b[1]); 参数为一个数组的具体元素,不符合指针定义。所以B是非法的调用。
选项C:f3(&b[1]); 参数为一个数组元素的地址,符合指针定义。
选项D:f3(b); 参数为数组名,表示该数组的首地址,符合指针定义。