资源描述:
《C语言指针习题__附答案[1].doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、选择题1.变量的指针,其含义是指该变量的_________.a)值b)地址c)名d)一个标志2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____.a)a,point,*&ab)&*a,&a,*pointc)*&point,*point,&ad)&a,&*point,point3.若有说明;int*p,m=5,n;以下正确的程序段的是________.a)p=&n;b)p=&n;scanf("%d",&p);scanf("%d",*p);c)scanf("%d",&n);d)p=&n;*p=n;*p=
2、m;4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.main(){int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);……}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5.已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是________.voidprint_value(int*x){printf(“%d
3、”,++*x);}a)23b)24c)25d)266.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A)*p=&a;scanf("%ld",p);B)p=(long*)malloc(8);scanf("%ld",p);C)scanf("%ld",p=&a);D)scanf("%ld",&a);7.有以下程序#includemain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d",m,n,*p,*q);}程序运行后
4、的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,28.有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d",c);}执行后的输出结果是A)1B)2C)3D)49.有以下程序main(){inta,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d",a);}程序运行后的输出结果是()A)4B)1C)0D)运行时出错,无定值10.在16位编译系统上,若有定义inta[]={10,2
5、0,30},*p=&a;,当执行p++;后,下列说法错误的是()A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()A)5B)6C)8D)912.若有以下定义,则对a数组元素的正确引用是_________.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2)13.若有以下定义,则p+5表示_______.inta[10],*p=a;a)元
6、素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义:inta[10]={15,12,7,31,47,20,16,28,13,19},*p;下列语句中正确的是()A)for(p=a;a<(p+10);a++);B)for(p=a;p<(a+10);p++);C)for(p=a,a=a+10;pintmain(){intx[]={10,20,30};int*px=x;printf("%d,",++
7、*px);printf("%d,",*px);px=x;printf("%d,",(*px)++);printf("%d,",*px);px=x;printf("%d,",*px++);printf("%d,",*px);px=x;printf("%d,",*++px);printf("%d",*px);return0;}程序运行后的输出结果是()A)11,11,11,12,12,20,20,20B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20D)20,10,11,20,11,12,20,2
8、016.设有如下定义:intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;printf(