内容正文:
《编程语言基础——C语言》高等教育出版社(第5版)
第八章 指针 章节过关卷
考试时间90分钟 满分100分
班级 姓名 成绩
1、 单项选择题(本题15小题,每小题2分,满分30分)
1. 在C语言中,下列哪个选项是正确的指针变量定义?( )
A. int *ptr; B. int ptr; C. *int ptr; D. *ptr;
2. 下列哪个选项是正确的指向字符型数据的指针变量定义?( )
A. char *ptr; B. int *ptr; C. float *ptr; D. double *ptr;
3. 下列哪个选项是正确的指向多维数组的指针变量定义?( )
A. int **ptr; B. int *ptr[]; C. int (*ptr)[]; D. int *ptr;
4. 在C语言中,以下哪个选项是取地址运算符?( )
A. * B. & C. -> D. ++
5. 变量的指针,其含义是指该变量的( ).
A.值 B.地址 C.名 D.一个标志
6. 定义int *swap()指的是( ).
A.指一个返回整型值的函数swap
B.指一个返回指向整型值指针的函数swap
C.一个指向函数swap()的指针,函数返回一个整型值
D.以上说法均错
7. 具有相同类型的指针类型变量p与数组a,不能进行的操作是( ).
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
8. 若a是整型变量,则下列表达式能得到a的值的合法形式是( ).
A.&(a+5) B.*a C.&*a D.*&a
9. 若有定义:int *a[4];则标识符a是( ).
A.是一个指针数组名
B.是一个指向整型变量的指针
C.是一个指针,它指向一个含有四个整型元素的一维数组
D.定义不合法
10. 若有int *p1, *p2,k; 不正确的语句是( ).
A. p1=&k B. p2=p1
C. *p1=k+12 D. k=p1+p2
11. 对于类型相同的指针变量,不能进行哪种运算?( )
A.+ B.- C.= D.==
12. 指针变量p1,p2类型相同,要使p1,p2指向同一变量,哪个语句是正确的( ).
A.p2=*&p1; B.p2=**p1; C.p2=&p1; D.p2=*p1
13. 下列语句定义x为指向int类型变量a的指针,正确的是( ).
A.int a,*x=a; B.int a,*x=&a; C.int *x=&a,a; D.int a,x=a;
14. 假定a是一个二维数组,则a[i][j]的指针访问方式为( ).
A.*(a+i+j)
B.*(*(a+i)+j)
C.*(a+i)+j
D.*a+i+j
15. 设有如下定义:
char *aa[2]={“abcd”,”PQMN”};
则下列说法中正确的是( ).
A.aa数组元素的值分别是”abcd”、”PQMN”
B.aa是指针变量,它指向含有两个数组元素的字符型一维数组
C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D.aa数组的两个元素分别存放了字符’a’和’P’的地址
二、判断题(本题10小题,每小题3分,满分30分)
1. 使用字符指针能对数组整体赋值.( )
2. 函数中使用指针变量作为形式参数,就有可能在被调函数中操作主调函数中的实参.( )
3. 链表中,数据域部分存放用户的实际数据,指针域部分存储下一个结点的地址.( )
4. 一个指针变量只能指向一个类型的变量.( )
5. 指针就是一个变量的地址.( )
6. 将一维数组a的第i个元素的地址赋给指针变量p的语句是p=&a[i].
7. char *s;*s=’H’;是正确的.( )
8. char *s;scanf(“%s”,s)是正确的.
9. 二位数组中,a[i][j]的指针可以表示为*(a+i)+j.( )
10. 对指针变量的初始化