# include <stdio.h>
void mystery (int *ptra, int *ptrb) {
int *temp;
temp = ptrb;
ptrb =ptra;
ptra = temp;
}
int main () {
int a = 2016, b=0, c= 4, d = 42;
mystery (&a, &b);
if (a < c)
mystery (&c, &a);
mystery (&a, &d);
print f("%d\n", a);
}
我的尝试:
a 和 d 不会交换,因为函数 myy() 不会更改值,而是更改函数本地的指针。
请您用正式的方式解释一下好吗?如何运作 功能mystery
?
在 C 中,函数总是按值传递。因此,您所做的指针交换在函数外部没有任何影响,因为您只是更改本地值。
您需要交换它们指向的内容,而不是交换指针,即您需要取消引用它们:
void mystery (int *ptra, int *ptrb) {
const int temp = *ptrb;
*ptrb = *ptra;
*ptra = temp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)