C语言指针经典练习题-及答案
C语言指针练习题及答案 一、选择题 1. 变量的指针,其含义是指该变量的____. a)值 b)地址 c)名 d)一个标志 2.若有语句int *point,a=4;和point=下面均代表地址的一组选项是__ _. a)a,point,*int *p,m=5,n;以下正确的程序段的是________. a)p= b)p= scanf(“%d“, scanf(“%d“,*p); c)scanf(“%d“, d)p= *p=n; *p=m; 4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是__ _____. main() { int *p,*q,a,b; p= printf(“ a:”); scanf(“%d”,*p); …… } a)*p表示的是指针变量p的地址 b)*p表示的是变量a的值,而不是变量a的地址 c)*p表示的是指针变量p的值 d)*p只能用来说明p是一个指针变量 5. 已有变量定义和函数调用语句:int a=25; print_value( 下面函数的正确输出结果是______. void print_value(int *x) { printf(“%d\n”,++*x);} a)23 b)24 c)25 d)26 6.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A) *p= r=p;p=q;q=r; printf(“%d,%d,%d,%d\n“,m,n,*p,*q); }程序运行后的输出结果是 A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2 8. 有以下程序 main() { int a=1, b=3, c=5; int *p1= *p =*p1*(*p2); printf(“%d\n“,c); }执行后的输出结果是 A)1B)2C)3D)4 9. 有以下程序 main() { int a,k=4,m=4,*p1= a=p1== printf(“%d\n“,a); }程序运行后的输出结果是( ) A)4B)1 C)0 D)运行时出错,无定值 10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=,当执行p++;后,下列说法错误的是( ) A)p向高地址移了一个字节B)p向高地址移了一个存储单元 C)p向高地址移了两个字节D)p与a+1等价 11.有以下程序段 int a[10]={1,2,3,4,5,6,7,8,9,10},*p= b=p[5]; b中的值是( ) A)5 B)6 C)8 D)9 12.若有以下定义,则对a数组元素的正确引用是_________. int a[5],*p=a; a)* a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)元素a[6]的值 14.设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是( ) A) for(p=a;a