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

时间:2010-06-12 20:01:15

标签: 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;
}

问题是,我希望能够f2()main()使用f1()

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

2 个答案:

答案 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;
}