C语言习题集合(指针)
第七章
7.1选择题
指针
1.若有说明:inta=2,*p=&a,*q=p;,则以下非法的赋值语句是()。
A.p=q;B.*p=*q;C.a=*q;D.q=a;2.若定义:inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为:
A.无确定值B.a的地址C.512D.5113.已有定义inta=2,*p1=&a,*p2=&a;下面不能正确执行的赋值语句是()。
A.a=*p1+*p2;B.p1=a;C.p1=p2;D.a=*p1*(*p2);4.变量的指针,其含义是指该变量的()。
A.值B.地址C.名D.一个标志5.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、
c的语句是()。
A.scanf("%d%d%d",&a,&b,d);B.scanf("%d%d%d",a,b,d);
C.scanf("%d%d%d",&a,&b,&d);D.scanf("%d%d%d",a,b,*d);6.若已定义inta=5;下面对(1)、(2)两个语句的正确解释是()。
(1)int*p=&a;(2)*p=a;
A.语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值。B.(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。C.(1)在对p进行说明的同时进行初始化,使p指向a;
(2)变量a的值赋给指针变量p。
D.(1)在对p进行说明的同时进行初始化,使p指向a;
(2)将变量a的值赋予*p。
7.若有语句int*p,a=10;p=&a;下面均代表地址的一组选项是()。
A.a,p,*&aB.&*a,&a,*pC.*&p,*p,&aD.&a,&*p,p
8.若需要建立如图所示的存储结构,且已有说明double*p,x=0.2345;则正确的赋值语句
是()。
x
A.p=x;B.p=&x;C.*p=x;D.*p=&x;9.若有说明:int*p,a=1,b;以下正确的程序段是()。
A.p=&b;B.scanf("%d",&b);
scanf("%d",&p);*p=b;C.p=&b;D.p=&b;
scanf("%d",*p);*p=a;
10.有如下语句:intm=6,n=9,*p,*q;p=&m;q=&n;如图1所示,若要实现下图所示的存储
结构,可选用的赋值语句是()
。
p