2010-06-12 54 views
1

这是我有问题的一个简单的例子:这个例子可以用指针而不是全局变量来完成吗?

#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; 
} 

的问题是,我希望能够在两者并main()f1()使用f2()

这样做可以不使用全局变量?

回答

9

您需要将指针传递给一个指针,所以你需要在main()创建一个指针,这样就可以利用其地址:

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

    return 0; 
} 
+0

真棒绝招!谢谢=) – Louise 2010-06-12 20:17:15

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; 
} 
相关问题