【发布时间】:2018-04-17 03:10:23
【问题描述】:
这段代码的输出是20 20 10。前20很容易理解。但我无法理解函数 change1 和 change2 是如何访问变量 b 的。
#include<stdio.h>
int a = 5, b = 10;
void change1(int *p);
void change2(int **pp);
main( )
{
int x=20, *ptr=&x;
printf("%d ",*ptr);
change1(ptr);
printf("%d ",*ptr);
change2(&ptr);
printf("%d\n",*ptr);
}
void change1(int *p)
{
p = &a;
}
void change2(int **pp)
{
*pp = &b;
}
【问题讨论】:
-
change2函数正在访问b,因为您在其中使用了&b。那是你打算写的吗? -
void change1(int *p) { p = &a; }不影响ptrinchange1(ptr); -
没有。对不起,如果我不清楚。我无法理解哪个指针正在访问哪个其他变量以及 b (10) 的最终值如何显示在输出中。
标签: c dereference double-pointer