第六章指针
一、选择题
1. 下列关于函数参数的描述中错误的( )
A. 函数的形参在定义时不占用内存的存储单元
B. 在函数的传值调用中将用实参来初始化形参
C. 在函数的传址调用中形参不需要分配存储空间
D. 在函数的传引用调用中形参是实参的别名
2. 关于函数的说法中,错误的是( )
A. 函数名代表函数的入口地址
B. 函数指针就是返回指针值的函数
C. 函数指针可以作为另一个函数的参数
D. 在32位系统中,函数指针变量的存储空间是4个字节
3. 关于指针运算的说法中,不正确的是( )
A. 两个指针在一定条件下可以进行相等或不等的运算
B. 可以用空指针赋值给指针变量
C. 一个指针可以加上两个整数之差
D. 两个指针在一定条件下可以相加
4. 已知:const char *p=”abc”;,则下列语句合法的是( )
A. p[2]=’k’; B. *p[2]=’k’; C. *p=”xyz”; D. p=”xyz”;
5. 若有语句:char* p=new char[30];,则释放p所指向的动态内存应使用的语句是( )
A. delete p; B. delete *p; C. delete &p; D. delete[] p;
6. 若有变量定义:int x=5;,则将rx定义为变量x的引用的是( )
A. int rx=x; B. int rx=&x; C. int *rx=&x; D. int &rx=x;
7. 传递引用调用方式起着( )的作用。
A. 传值调用C. 在函数的传址调用中形参不需要分配存储空间 B. 函数指针就是返回指针值的函数 D. 两个指针在一定条件下可以相加
8. 关于引用的叙述中,不正确的是( )
A. 每一个引用都是其所引用对象的别名,因此必须初始化
B. 形式上针对引用的操作实际上作用于它所引用的对象
C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D. 不需要单独为引用分配存储空间
9. 若有定义:int a[5],*p=a;,则不合法的表达式是( )
A. p=p+1 B. a=a+1 C. p-a D. a+2
10.关于delete的描述中,正确的是( )
A. delete是函数
B. 它必须用于new返回的指针
C. 对一个指针可以连续使用多次delete
D. delete[]只能删除一维的动态数组
11.引用调用的调用方式是指( )
A. 形参和实参都是变量 B. 形参是指针,实参是地址值
C. 形参是引用,实参是变量 D. 形参是变量,实参是地址值
12. 下面程序段的运行结果是( )
char a[]=\
char *p=a;
p+=3;
cout< A. 4 B. 8 C. 9 D. 12 13. 若有定义: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=&a[0][0]; 下列选项中的表达式能表示a[2][2]的是( ) A. p[2][2] B. *(*(p+2)+2) C. *(p+10) D. *(p+8) 14. 若有定义:int *p=new int;,则下列说法中不正确的是( ) A. 声明了一个指向整型变量的指针p B. 可以用*p来表示所指向的整型变量 C. 通过运算符new,分配了一个整型数据的空间,并将其起始地址赋给指针p D. 系统为指针变量p分配了一个整型数据的存储空间 15. 定义函数指针的是( ) A. int *p( ); B. int (*p)( ); C. (int *) p( ); D. (int *p)( ); 16. 在int a=5, *p=&a;中,*p的值是( ) A. 变量a的地址 B. 无意义 C. 变量p的地址 D. 5 17. 在int a=5, *p=&a;中,p的值是( ) A. 变量a的地址 B. 无意义 C. 变量p的地址 D. 5 18. 已知:int a[3][7];,下列格式中不表示数组元素的是( ) A. *(a+1)[5] B. *(*a+3) C. *(*(a+1)) D. *(&a[0][0]+2) 19. const char *ptr;语句的含义是( ) A. 定义指向字符常量的指针 B. 定义指向字符的常量指针 C. 定义指向字符串常量的指针 D. 定义指向字符串的常量指针 20. char * const ptr;语句的含义是( ) A. 定义指向字符常量的指针 B. 定义指向字符的常量指针 C. 定义指向字符串常量的指针 D. 定义指向字符串的常量指针 21. 对下面语句的描述中,正确的是( ) const int* x; //(1) int* const x; //(2) const int* const x; //(3) A. 语句(1)的含义是指针变量x不能更改 B. 语句(2)的含义是指针变量x所指向的值不能更改 C.语句(3)的含义是指针变量x及其所指向的值均不能更改 D. 语句(1)和语句(2)是相同含义的不同定义方式 22. 定义数组指针的是( ) A. int *p[5]; B. int (*p)[5]; C. (int *)p[5]; D. int *p[]; 23. 下列关于delete运算符的描述中,错误的是( ) A. 它必须用于new返回的指针 B. 它也适用于空指针 C. 对一个指针可以使用多次该运算符 D. 指针名前只用一对方括号符,不管删除数组的维数 24. 下列说法正确的是( ) A. 数组的下标表示法处理速度比指针表示法处理速度慢 B. 数组的下标表示法处理速度比指针表示法处理速度快 C. 数组的下标表示法处理速度和指针表示法处理速度相同 D. 数组的下标表示法处理速度和指针表示法处理速度不可比较 25. 已知:char * const p=”abc”;,则下列语句合法的是( ) A. p[2]=’k’; B. *p[2]=’k’; C. *p=”xyz”; D. p=”xyz”; 26. 下列表示中,函数指针的引用格式是( ) A. (*p)(5) B. *p[5] C. *p(5) D. (*p)[5] 27. 对于int *pa[5];的下列描述中正确的是( ) A. pa是一个指向数组的指针,所指向的数组是5个int型元素 B. pa是一个指向某数组中第5个元素的指针,该元素是int型变量 C. pa[5]表示某个数组的第5个元素的值 D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针 28. 下列语句错误的是( ) A. char *p=”John”; p[2]=’a’; B. char name[5]=”John”; name[2]=’a’; C. char name[5]=”John”, *p=name; p[2]=’a’; D. char name[5]=”John”, *p=&name[2]; *p=’a’; 29. 有如下定义语句:int a[]={1,2,3,4,5};,则对语句int *p=a;正确的描述是( ) A. 语句int *p=a;定义不正确 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++常见选择填空习题集在线全文阅读。
相关推荐: