C语言程序设计:指针单元测试与答案.docx
一、单项选择题1、内存是以()为单位的一片连续存储空间,每个字节都有一个唯一的编号,这个编号称为内存的“地址”A.字长B.字符C.位D.字节正确答案:D解析:D、内存中的地址是以字节为单位进行编号时行存储的2、在C语言中,允许用一个变量来存放指针,这种变量称为()。A.指针变量B.结构体C.数组D.指针正确答案:A解析:A、指针变量的定义3、以下程序的输出结果是:#include<stdio. h>int main()(int a, b, c;int *p;b=a+3;p=&a;c=*p+3;printf (%d, %dn,*p, c);return 0;5,8A. 8,88, 5B. 5, 5正确答案:A的内解析:A、p指向变量a所在的地址,输出*p就是输出变量容,*P为变量a,即*p等于5, c等于8。4、内存单元的指针和内存单元的内容是两个()的概念。A.相同B.不同C. 一致D.没有任何关系正确答案:B解析:B、内存单元的内容指的是数据本身,内存单元地址指的是 存放数据内容的地址。5、在以下定义中,正确的说明语句为int a3, 4A. int *a10int a _B. int ab.正确答案:B解析:B、指针数据的定义A错误原因是定义数组时,数组大小不能是变量。B错误原因是二维 数组定义形式错误,C错误原因是定义二维数组时,行和列大小均未 确定。6、以下定义中,属于指针数组的是()?A. char *name 口二abc,de;int (*p);B. int (*name);char (*p);正确答案:A解析:A、指针数组的定义7、假设已定义:int a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a, i;其中0WiW9,那么对a数组元素不正确的引用是:A. apapi:B. *(&ai)a10_正确答案:D解析:D、数组a从下标0开始编号,因此D溢出8、以下程序的输出结果是:#include<stdio. h>int a = 2, 4, 6, 8;int main()int i;int *p=a;for(i=0;i<4;i+) ai=*p+;printf (,%dn,z, a 2);return 0;A. 6B. 42C. 8正确答案:A解析:A、指针的移动,并不改变数组内容9、假设有以下的定义:int a = l, 2, 3, 4, 5, 6, 7, 8, 9, 10, *p=a;那么值为3的表式是:A. p+=2, * (p+)p+=2, *+pB. p+=2, +*pp+=3, *kp+正确答案:A解析:A、需要输出第3个数,即就是下标为2对应数组的内容 10、假设有以下说明及语句:int a = 10, 20, 30, 40, 50), *p;p=&al;那么表达式*+p的值是?A. 2031B. 3021正确答案:C解析:C、p=指向数组a的第2个元素,*+p指向第3个元 素,即3011、假设有以下说明:int a10 = l, 2, 3, 4, 5, 6, 7, 8, 9, 10, *p=a;那么数值为6的表达式是?A. * (p+6)*p+=5B. *p+6p+5正确答案:B解析:B、数组是从0开始编号的,p一开始指向数组的首地址12、 假设有以下说明及语句:inta = 10, 20, 30, 40, 50), *p;p=;*p+;那么表达式*p 的值是?A. 3130B. 2120正确答案:B解析:B、*p+等价于* (p+)13、下面是对s的初始化,其中不正确的选项是.A. char s5=char s 5=' a',' b',' c'B. char s5=abcchar s5二abcdef”;正确答案:D 解析:D、字符串指针的定义14、下面程序的输出是 o#include<stdio. h>int main ()(int i=3, j=2;char *a=dcba;printf(%c%cn, ai, aj);return 0;A. b, ca, bB. beab正确答案:D解析:D、ai指的是字符串第4个字条,指的是字符串第3个字条15、语句int (*ptr)();的含义是A. ptr是一个函数名,该函数的返回值是指向int型数据的指针ptr是指向函数的指针,该函数返回一个int型数据c. ptr是指向int型数据的指针变量D. ptr是指向一个维数组的指针变量 正确答案:B16、已有函数max(a, b),为了使函数指针变量p指向函数max,那么 下面选项中赋值方法正确的选项是()。A. p=max (a, b)p=maxC.*p=maxD. *p=max (a, b)正确答案:B17、关于语句int*ptr (),以下说法正确的选项是A. ptr是一个函数名,该函数的返回值是指向int型数据的指针B.这个语句是定义函数的语句B. ptr是一个指针变量*ptr是一个函数名正确答案:B18、不能把字符串:Hello!赋给数组b的语句是 oA. char b10=Hello!;char b10;b=Hello!;B. char =char b10 ;strcpy(b,,/Hello!,/);正确答案:B19、如下程序的输出结果是()#include<stdio. h>int main()(int *k, *j, i=100;j=&i; k=&j;printf(%dn, *k);return 0;A. 100j的地址B. i的地址D.运行错误正确答案:A20、以下定义中,属于指针数组的是()?A. char *name 口二abc,de;char (*p);B. int (*name);int (*p);正确答案:A