1、下面代码关于数组名描述不正确的是( )
int main()
{
int arr[10] = {0};
return 0;
}
A.数组名arr和&arr是一样的
B.sizeof(arr),arr表示整个数组
C.&arr,arr表示整个数组
D.除了sizeof(arr)和&arr中的数组名,其他地方出现的数组名arr,都是数组首元素的地址。
答案解析
A选项错误明显。arr的类型是int [10],而&arr的类型是int (*)[10],根本不是一个类型,
不可能是一样的。而在 sizeof(arr)和&arr中,arr都是看成整体的,而一般它代表一个数组
的首地址。
2、下面哪个代码是错误的?( )
#include <stdio.h>
int main()
{
int *p = NULL;
int arr[10] = {0};
return 0;
}
A.p = arr;
B.int (*ptr)[10] = &arr;
C.p = &arr[0];
D.p = &arr;
答案解析
就数据类型来看,A左右两边都是int *,B左右两边都是 int (*)[10],C左右两边
都是int *,D左边是 int *,右边是 int (*)[10],故选D。
3、下面哪个是函数指针?( )
A.int* fun(int a, int b);
B.int(*)fun(int a, int b);
C.int (*fun)(i