静态寿命

时间:2010-10-23 18:16:37

标签: c

我有关于静态变量的问题。据说静态变量的寿命超出了函数的范围(如果在函数中定义)。但是指向它的指针必须在退出时给出值。但它不起作用。

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

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

2 个答案:

答案 0 :(得分: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;
}

你会看到你期望的行为。

答案 1 :(得分:2)

int *p;

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