2010-10-23 2 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' global и присвоили его' & chacha', он все еще не работает? –

+0

@ Nathan: Worked..Спасибо –

+3

Затем я предлагаю вернуть код, который вы отправили в оригинале, чтобы будущие читатели вопроса и ответа могли понять проблему и ее решение. –

ответ

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

вы увидите поведение, которое вы ожидаете.

Смежные вопросы