1.下面关于"指针"的描述不正确的是:(A )
A.当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B.32位系统下任何类型指针的长度都是4个字节
C.指针的数据类型声明的是指针实际指向内容的数据类型
D.野指针是指向未分配或者已经释放的内存地址
A.当使用free释放掉一个指针内容后,指针变量的值需要手动置为NULL
B.32位系统下任何类型指针的长度都是4个字节 64位系统下任何类型指针的长度都是8个字节
C.指针的数据类型声明的是指针实际指向内容的数据类型
D.野指针是指向未分配或者已经释放的内存地址
2.关于下面代码描述正确的是:(C )
char* p = "hello ";
A.把字符串hello 存放在p变量中
B.把字符串hello 的第一个字符存放在p变量中
C.把字符串hello 的第一个字符的地址存放在p变量中
D.*p等价于hello
当指针指向常量字符串的时候是将字符串的首字符的地址存放到指针里
3.关于数组指针的描述正确的是:( C)
A.数组指针是一种数组
B.数组指针是一种存放数组的指针
C.数组指针是一种指针
D.指针数组是一种指向数组的指针
ABC.数组指针是一种存放数组的指针,数组指针是一种指向数组的指针
D.指针数组是一组存放指针的数组
4.下面哪个是数组指针( C)
A.int** arr[10]
B.int (*arr[10])
C.char *(*arr)[10]
D.char(*)arr[10]
A.int** arr[10] 是一个存放二级指针的数组 (arr没有和*用()括起来就是数组)
5.下面哪个是函数指针?( C)
A.int* fun(int a, int b);
B.int(*)fun(int a, int b);
C.int (*fun)(int a, int b);
D.(int *)fun(int a, int n);
A.int* fun(int a, int b)和B.int(*)fun(int a, int b);D.(int *)fun(int a, int n);都是函数声明
6.定义一个函数指针,指向的函数有两个int形参并且返回一个函数指针,返回的指针指向一个有一个int形参且返回int的函数?下面哪个是正确的?( A)
A.int (*(*F)(int, int))(int)
B.int (*F)(int, int)
C.int (*(*F)(int, int))
D.*(*F)(int, int)(int)
7.在游戏设计中,经常会根据不同的游戏状态调用不同的函数,我们可以通过函数指针来实现这一功能,下面哪个是:一个参数为int *,返回值为int的函数指针( B)
A.int (*fun)(int)
B.int (*fun)(int *)
C.int* fun(int *)
D.int* (*fun) (int *)
8.下面哪个代码是错误的?(C )
#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;数组的地址应该放在数组指针中
9.下面代码关于数组名描述不正确的是(A )
int main()
{
int arr[10] = {0};
return 0;
}
A.数组名arr和&arr是一样的 值是一样的 但是类型不一样
B.sizeof(arr),arr表示整个数组
C.&arr,arr表示整个数组
D.除了sizeof(arr)和&arr中的数组名,其他地方出现的数组名arr,都是数组首元素的地址。
10.下面代码的执行结果是( C)
#include <stdio.h>
int main()
{
char str1[] = "hello.";
char str2[] = "hello.";
char *str3 = "hello.";
char *str4 = "hello.";
if(str1 == str2)
printf("str1 and str2 are same\n");
else
printf("str1 and str2 are not same\n");
if(str3 == str4)
printf("str3 and str4 are same\n");
else
printf("str3 and str4 are not same\n");
return 0;
}
A.str1 and str2 are same str3 and str4 are same
B.str1 and str2 are same str3 and str4 are not same
C.str1 and str2 are not same str3 and str4 are same
D.str1 and str2 are not same str3 and str4 are not same
11.设有以下函数void fun(int n,char *s){……},则下面对函数指针的定义和赋值均是正确的是:(B )
A.void (*pf)(int,char); pf=&fun;
B.void (*pf)(int n,char *s); pf=fun;
C.void *pf(); *pf=fun; 不是指针
D.void *pf(); pf=fun; 不是指针
11.如何定义一个int类型的指针数组,数组元素个数为10个:(C )
A.int a[10] 数组
B.int (*a)[10] 指向10个元素的数值
C.int *a[10];
D.int (*a[10])(int); 存放函数指针的数组