C中的指针,不明白他们是如何得到这个结果的

new*_*int 3 c

这是代码片段

void F (int a, int *b)
{
 a = 7 ;
 *b = a ;
 b = &a ;
 *b = 4 ;
 printf("%d, %d\n", a, *b) ;
}
int main()
{
 int m = 3, n = 5;
 F(m, &n) ;
 printf("%d, %d\n", m, n) ;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

回答

4 4 
3 7
Run Code Online (Sandbox Code Playgroud)

我看到如何4 4计算,我没有得到他们如何得到3 7(我明白如何计算3,它没有改变,因为它没有通过引用传递)

谢谢 !

sep*_*p2k 7

F用注释来注释函数来解释发生了什么:

a = 7 ;  // a is now 7
*b = a ; // b points to n, so n is now 7
b = &a ; // b now points to a and no longer to n
*b = 4 ; // a is now 4. n is unaffected
Run Code Online (Sandbox Code Playgroud)