扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
上一文讨论了C语言:任意输入两个整数,交换并输出(合集)。
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联面向各种领域:成都除甲醛等成都网站设计公司、网络营销推广解决方案、网站设计等建站排名服务。但随着进一步学习,会遇到考察不同小细节的新奇题目。是值得大家更深刻的去辨析的。
感兴趣可以直接去学习。
C语言:任意输入两个整数,交换并输出(合集)
本文直接补充(错误辨析版)地址交换这种特殊情况,为什么不去直接修改上一篇文章呢?因为我想水一篇!但是质量可不水!hahaha
(错误辨析版)地址交换,强调与地址的交换而不是地址的传递!这是不能完成数值交换的本质原因!
#includevoid swap(int *a,int *b);
int main()
{
int i,j;
scanf("%d%d",&i,&j);
int *p=&i,*q=&j;
swap(p,q);
printf("%d%d\n",*p,*q);
return 0;
}
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
问输入10 5后程序输出什么样的结果?小编做这题时,自信慢慢,哟~考察指针的地址传递了,有了上次的教训和学习,最终又填入了错误答案510!
理论实践
其实是没真正的明白其中的逻辑!将容易弄混的代码放在一起,大家观察比较!
第二个是可以实现交换的(地址传递)
#includevoid swap(int *a,int *b);
int main()
{
int i,j;
scanf("%d%d",&i,&j);
int *p=&i,*q=&j;
swap(p,q);
printf("%d%d\n",*p,*q);
return 0;
}
void swap(int *a,int *b)
{
int t;
t=*a;*a=*b;*b=t;
}
理论实践
其实很容易看出来,是自定义swap中不同。
地址交换中swap定义了新的指针*t,而地址传递中swap定义了新的整形t(上一篇解释过如有需要C语言:任意输入两个整数,交换并输出(合集))。
为什么不能实现呢?
函数swap(int *a,int *b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int *a,int *b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果仍为105。
其他视图说明
两个人从监狱的窗户往外看,一个看见了土地,一个看见了星星。——徐伦
希望对你有帮助,语言学习贵在坚持输入和输出!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流