下面程序的输出结果是什么?为什么?

发布网友 发布时间:2022-04-26 09:56

我来回答

1个回答

热心网友 时间:2022-06-27 02:07

指针入门的东西,都是些概念上的问题,楼主不要太纠结,要解释这个问题,要费很多口舌,我简单说两句:
上面程序是检验交换两个数,一个是传值,一个是传引用,传值就是复制值,然后把复制的副本传过去,sub1(char x,char y) { char c; c=x;x=y;y=c;}
把x,y复制过去,把x,y的副本交换,完了这个函数执行完了,x,y的副本销毁了x,y还是x,y.

为了解决这个问题,指针出来了,c++出现了指针和引用(...)此处省略n个字.指针和引用又有点不一样,等楼主深入了自然会明白.指针和引用其实还是传值,还是传副本,不过传的是地址的副本.
sub2(char*x,char*y) {char c;c=*x;*x=*y;*y=c;} 这里由于形参和实参,新手可能会混淆,不妨写成这样sub2(char*p1,char*p2) {char c;c=*p1;*p1=*p2;*p2=c;}
假设我有一个指针char* p1,这个指针用来存放char类型变量的地址的.p1 = &x 存放x的地址
*p1 = *(&x) *p2 = *(&y)
*p1 = *p2 将p2这个指针所指向的东西值赋值给*p1, *p1是p1所指向的东西,p1存放的是x的地址 &x,现在&x这个地址对应的变量存放的就是'b'了,&x这个地址对应的变量就是x咯,所以x=='b' ;同样y==‘a’

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com