求讲解几道C语言的题 52 声明语句为“char s[4][15],*p1,**p2;int x,*y;”,下列语句中正确的是( D ).A.p2=s;B.y=*s;C.*p2=s;D.y=&x;45.下列语句定义p为指向float型变量d的指针,其中正确的是( C ).A.float d,*p=d;B.float *p=&d,d;C.float d,*p=&d;D.float d,p=d;55.指出正确的程序是(程序 (2) ).程序 (1) 程序 (2)#include #include void main() void main(){ { char *p; char s[80]; double x,y,*p;p=s[0]; x=3.45; p=&x; y=*p;scanf("%s",s); printf("%f\n",y);printf("%s\n",p); } }程序 (3) 程序 (4)#include #include void main() void main(){ {int x,*

问题描述:

求讲解几道C语言的题
52 声明语句为“char s[4][15],*p1,**p2;int x,*y;”,下列语句中正确的是( D ).
A.p2=s;B.y=*s;C.*p2=s;D.y=&x;
45.下列语句定义p为指向float型变量d的指针,其中正确的是( C ).
A.float d,*p=d;B.float *p=&d,d;
C.float d,*p=&d;D.float d,p=d;
55.指出正确的程序是(程序 (2) ).
程序 (1) 程序 (2)
#include #include
void main() void main()
{ {
char *p; char s[80]; double x,y,*p;
p=s[0]; x=3.45; p=&x; y=*p;
scanf("%s",s); printf("%f\n",y);
printf("%s\n",p);
} }
程序 (3) 程序 (4)
#include #include
void main() void main()
{ {
int x,*p; int *p=&a;
*p=x; int a;
printf("%d\n",*p); printf("%d\n",*p);
} }
都错在哪里了
59.若变量已正确定义,( A )不能使指针p成为空指针.A.p=EOF B.p=0 C.p=’\0’ D.p=NULL
60.对于类型相同的指针变量,不能进行( A )运算.A.+ B.- C.= D.= =
65 设有定义语句int a,*pa=&a;和赋值语句*pa=a;,则下列说法正确的是( A ).
A.定义语句中的“*pa=&a”表示将a的地址赋给pa
B.定义语句中的“*pa=&a”表示将a的值赋给pa
C.赋值语句中的“*pa=a”表示将a的地址赋给pa
D.赋值语句中的“*pa=a”表示将a的值赋给pa

52:应该用数组指针或指针数组指向二维数组,AC都错.B类型不一致.
45:很简单,定义一个指针变量*p,指向普通变量就是把普通变量的地址赋给它.
55:程序1,p指向的是字符,不能用%s输出.
程序3,p是野指针,不能赋值.
程序4,定义指针的时候还没有a这个变量,当然不能赋值了.
59,EOF == -1,其它在底层都是0.
60,指针是地址,不能加.
65,int *pa=&a表示pa指向a的地址指向的内存.此处是定义所以要加*,表示定义一个指针.
*pa=a表示把a的值赋给pa指向的内存.