有人可以向我解释/解释为什么下面代码片段中主函数中变量 i 的值不会通过函数 test1 更改而通过 test2 更改吗?我认为单个指针应该足以改变 i 的值。为什么我们应该使用双指针?
#include <stdio.h>
void test1(int* pp)
{
int myVar = 9999;
pp = &myVar;
}
void test2(int** pp)
{
int myVar = 9999;
*pp = &myVar;
}
int main()
{
printf("Hej\n");
int i=1234;
int* p1;
p1 = &i;
test1(p1);
printf("does not change..., p1=%d\n",*p1);
test2(&p1);
printf("changes..., p1=%d\n",*p1);
return 0;
}