这是我遇到的问题的简化示例:
#include <stdio.h>
#include <stdlib.h>
void f2(int** a) {
printf("a: %i\n", **a);
}
void f1(int* a) {
f2(&a);
}
int main() {
int a = 3;
f1(&a); // prints "a: 3"
f2(???);
return 0;
}
问题是,我希望能够f2()
和main()
使用f1()
。
可以在不使用全局变量的情况下完成吗?
答案 0 :(得分:9)
您需要将指针传递给指针,因此您需要在main()
中创建一个指针,以便您可以获取其地址:
int main()
{
int a = 3;
int* aptr = &a;
f2(&aptr);
return 0;
}
答案 1 :(得分:4)
int main() {
int a = 3;
int *aa = &a; /* stores the address of a */
f1(&a); /* prints "a: 3" */
f2(&aa); /* prints "a: 3" */
return 0;
}