int a=10,b=20,*p1,*p2; p1=&a; p2=&b; p1=p2; printf("%d,%d",*
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/05 09:44:15
int a=10,b=20,*p1,*p2; p1=&a; p2=&b; p1=p2; printf("%d,%d",*p1,*p2); 答案是20,20怎么算?
我算的是10,10,不是应该是指针变量p2也指向指针变量p1所指向的变量么
我算的是10,10,不是应该是指针变量p2也指向指针变量p1所指向的变量么
提问:不是应该是指针变量p2也指向指针变量p1所指向的变量么?
回答:不是.
p1=&a; p2=&b; p1=p2;
刚开始p1指向a的地址,p2指向b的地址
但由于p1=p2; 语句,又使得p1指向p2指向的地址(p1=p2;这是一条赋值语句,就是把p2的地址值赋给p1,但p2的地址值并没有改变,所以你提问的答案是否定的),也就是说,p1=p2; 这条语句使得p1间接的指向了b的地址.最终p1,p2都指向了b的地址,所以执行printf("%d,%d",*p1,*p2); 语句
便输出了两次b的值,也就是20,20了
回答:不是.
p1=&a; p2=&b; p1=p2;
刚开始p1指向a的地址,p2指向b的地址
但由于p1=p2; 语句,又使得p1指向p2指向的地址(p1=p2;这是一条赋值语句,就是把p2的地址值赋给p1,但p2的地址值并没有改变,所以你提问的答案是否定的),也就是说,p1=p2; 这条语句使得p1间接的指向了b的地址.最终p1,p2都指向了b的地址,所以执行printf("%d,%d",*p1,*p2); 语句
便输出了两次b的值,也就是20,20了
int a=10,b=20,*p1,*p2; p1=&a; p2=&b; p1=p2; printf("%d,%d",*
main() { int x=10; int *p1=&x,*p2; p2=p1; printf("%d\n",*p2)
int *p1=malloc(4); int *p2=malloc(4); printf("p2-p1=%d\n",p2
int a,b,*p1*p2; 请问 p1=&a和*p1=a有什么区别?
有语句“int a=10,b=20,*p1,*p2; p1=&a; p2=&b; ”,若要让p1也指向b,可选用的赋值语
int *p1,*p2; p1=(int *)malloc(10); p2=p1+2; printf("p1=0x%x,
int m=1,n=2,*p1=&m,*p2=n; printf("%d%d%d%d“,*p1,*p2,*p1=*p1+
下面一段代码:int a=1,b=2,t; int *p1,*p2; p1=&a;p2=&b; t=*p1;*p1=*p
#include void swap(int b[]) { int *p,*p1,*p2; p1=&b[0] ;p2=&
swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; *p2=temp
p2->next=p1;p2=p1;
C语言 int *p,*p1,*p2; int a=5,b=3; p1=&5; p2=&3; *p = *p1; //