8, 7,7 ,8
答案嘛,运行下就能出来啊!解释的话,其实就是指针的理解。
完全注释如下:
#include
int main()
{
int a=7 , b= 8, * p, * q,* r ;//int a = 7,b = 8;声明两个变量,一个名字为a值为7.另一个名字为b,值为8
//搭返返int *p,*q,*r; 声明了三个int型的指针。指针是什么呢,就是地址。也就是说p的值就只能是int类型变量的地址。
//在计算机当中,所以变量的地址就是内存地址啦!
//p = & a; 这一句呢,就是 用&这个操作符,取得变量a的地址。这个时候p的值就是a这个变量的地址了!
//而*p呢,就是 7呢。这样子你应该能够懂*p的世拿意思了吧!注意p与*p的区别哦!
//p = & b;这句同上,不解释了!
p = & a; q = & b ;
r = p ; p = q ; q = r ;
// r = p;呢,就是将p的这个地址值 赋值给 变量 r。所以这个时候r就是 a的地址啦。所以*r就是7.
// 然后p = q ; 这一句就是p 不要原来a的地址啦,去要了q的值,而q值就是知饥原来b的地址。所以现在p
//保存的是b的地址了。所以*p变成8了。
//然后q又跑去要了r所保存的地址值, 所以现在q保存r的地址值。而上面r的地址值就是a的地址值。所以
// *q = * r 了。他们的值都是a的值了即为7.
//不知道你懂了没?我觉得很详细了!
printf("%d, %d,%d ,%d\n", * p , * q ,a ,b);
return 0;
}
main()
{ int a=7 , b= 8, * p, * q,* r ;
p = & a; p指向a
q = & b ;q指向b
r = p ; r也慧晌闹指向a
p = q ; p指向b
q = r ;q指向a
printf("%d, %d,%d ,%d\n", * p , * q ,a ,b);因谨含此输出8, 7, 7, 8
} //答案是多少,帮忙解答下,前罩随便搭上知识点,解释详细些,谢谢咯
汤小肥:
你好。
int main()
{
int a=7,b=8,*p,*q,*r;
p=&a;q=&b;//这时*p=7,*q=8,p指向a,q指向b
r=p;//这时*p=7,*q=8,*r=7,r指向a
p=q;//这时p指针被修改,指向了b,因为q是指向b的蔽轮指;*p=8,*q=8,*r=7
q=r;//这时q指针被宏配修改桐者,指向了a,因为r是指向a的;*p=8,*q=7,*r=7
printf("%d,%d,%d,%d\n",*p,*q,a,b);//打印8,7,7,8
return 0;
}
*p=8,*q=7,a=7,b=8
p=&a,q=&b,p指颤仿向a,q指向b,即p=7,q=8,
r=p,p=q,q=r,交换后p,q的值做交换乱耐,哗洞春
a,b的值不变