我正在为我的C作业做一个涉及指针的问题.我不是要求任何人做我的工作,而只是帮助理解这个问题.
void sort2(double* p,double* p) //First off I am assuming the second "p" is a typo and should be a q
此函数将接收两个指针并对它们指向的值进行排序.例如,如果您调用sort2(& x,& y),则在调用后调用x< = y. 我想知道的是,如果指针已被函数取消引用,我只是比较x和y而不是它们的内存地址吗?如果不是我如何比较内存地址?
解决方法
您传递的是2x双变量的地址,因此sort2()函数可以在源处交换值.
sort2(&x,&y)
该函数可以访问调用者的x和y内存地址,并在必要时交换存储在那里的值.
但是,如果函数只是按值取双参数,即
void sort2(double p1,double p2)
那么,虽然函数仍然可以比较和交换值,但是sort2()无法通过其当前签名将新值传递回其调用者,因为p1和p2被值复制到堆栈上并且将函数返回时丢失.
sort函数通过取消引用它们来访问指针变量的值,例如,
if (*p1 > *p2) { // swap / sort etc. double swap = *p2; *p2 = *p1; *p1 = swap; }
是的,你是对的,第二个p几乎肯定是一个错字.
原文地址:https://www.jb51.cc/c/115851.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。