C中的指针,不明白他们是如何得到这个结果的
发布时间:2020-12-16 10:28:14 所属栏目:百科 来源:网络整理
导读:这是代码片段 void F (int a,int *b){ a = 7 ; *b = a ; b = a ; *b = 4 ; printf("%d,%dn",a,*b) ;}int main(){ int m = 3,n = 5; F(m,n) ; printf("%d,m,n) ; return 0;} 回答 4 4 3 7 我看到4 4是如何计算的,我不知道它们是如何得到3 7的(我明白3是如何
这是代码片段
void F (int a,int *b) { a = 7 ; *b = a ; b = &a ; *b = 4 ; printf("%d,%dn",a,*b) ; } int main() { int m = 3,n = 5; F(m,&n) ; printf("%d,m,n) ; return 0; } 回答 4 4 3 7 我看到4 4是如何计算的,我不知道它们是如何得到3 7的(我明白3是如何计算的,它没有改变,因为它没有通过引用传递) 谢谢 ! 解决方法
在主要的开始,我们有
m=3 n=5 // int m = 3,n = 5; 然后我们调用F(m,& n),按值传递m,用指针传递n m = 3 n = 5 a = 3 b->n // F(m,&n); 现在,在F()中,我们将7分配给: m = 3 n = 5 a = 7 b->n // a = 7 然后我们将(= 7)分配给b指向的内存地址( – > n) m = 3 n = 7 a = 7 b->n // *b = a; 接下来我们改变b,所以现在b指向a: m = 3 n = 7 a = 7 b->a // b = &a; 然后我们将4分配给b指向的内存地址( – > a) m = 3 n = 7 a = 4 b->a // *b = 4; 打印a(= 4)和* b( – > a = 4) 并在函数外打印m(= 3)和n(= 7) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |