这个例子可以用指针而不是全局变量来完成吗?

Lou*_*ise 1 c c++

这是我遇到的问题的简化示例:

#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;
}
Run Code Online (Sandbox Code Playgroud)

问题是,我想能够使用f2()两个main()f1().

可以在不使用全局变量的情况下完成吗?

Jam*_*lis 9

您需要将指针传递给指针,因此您需要创建一个指针,main()以便您可以获取其地址:

int main() 
{
    int a = 3;
    int* aptr = &a;
    f2(&aptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)