NO.116 正确赋值指针
Q:若有说明: int *p1,*p2,m=5,n;以下均是正确赋值语句的是A.p1=&m;p2=&p1;
B.p1=&m;p2=&n;*p1=*p2;
C.p1=&m;p2=p1;
D.p1=&m;*p2=*p1;
为什么只有C正确? A.p1=&m;p2=&p1;
p2 = p1;
B.p1=&m;p2=&n;*p1=*p2;
能力有限,我不确定哪个是有问题,用排除法我认为是 *p1 = *p2 ,改成 p1 = p2
D.p1=&m;*p2=*p1
同B
p1=&m;p2=p1 A.
p2=&p1;
cannot convert 'int**' to 'int*' in assignment
B.
#include <stdio.h>
#include <math.h>
int main()
{
int *p1,*p2,m=5,n;
p1=&m;
p2=&n;
*p1=*p2;
printf("&m=%d\n", &m);// &m=6487564
printf("&n=%d\n", &n); // &n=6487560
printf("p1=%d\n", p1); // p1=6487564
printf("*p1=%d\n", *p1); // *p1=67
printf("p2=%d\n", p2); // p2=6487560
printf("*p2=%d\n", *p2); // *p2=67
return 0;
}
C.
#include <stdio.h>
#include <math.h>
int main()
{
int *p1,*p2,m=5,n;
p1=&m;
p2=p1;
printf("&m=%d\n", &m);// &m=6487564
printf("p1=%d\n", p1); // p1=6487564
printf("*p1=%d\n", *p1); // *p1=5
printf("p2=%d\n", p2); // p2=6487564
printf("*p2=%d\n", *p2); // *p2=5
return 0;
}
D.运行无显示
页:
[1]