2010-10-23 35 views
-1

我有一個關於靜態變量的問題。據說,靜態變量的壽命超出了函數的界限(如果在函數中定義的話)。但是一個指向它的指針必須給出該值,如果它退出。但它不起作用。靜態生命期

#include<stdio.h> 
int *p; 
int main() 
{ 
    clrscr(); 
    test(); 
    printf("%d",*p); 
    return 0; 
} 

void test(void) 
{ 
    static int chacha=0; 
    p=&chacha; 
} 
+1

既然您修改了聲明'p'全局的代碼並將它分配給'&chacha',它仍然不起作用嗎? – 2010-10-23 18:50:15

+0

@Nathan:Worked..Thanks – 2010-10-23 19:16:10

+3

然後,我建議恢復您發佈到原始代碼,以便未來的問題和答案的讀者可以瞭解問題及其解決方案。 – 2010-10-23 20:13:04

回答

3

它看起來不像你在任何地方聲明p

試試這個在test

int* test(void) 
{ 
    static int chacha = 0; 
    return &chacha; 
} 

現在,如果你的主要是:

int main() 
{ 
    int *p; 
    clrscr(); 
    p = test(); 
    printf("%d",*p); 
    getch(); 
    return 0; 
} 

你會看到你所期望的行爲。

2
int *p; 

int main() 
. . . 
. . . 
. . . 
p = &chacha;