我有关于静态变量的问题。据说静态变量的寿命超出了函数的范围(如果在函数中定义)。但是指向它的指针必须在退出时给出值。但它不起作用。
#include<stdio.h>
int *p;
int main()
{
clrscr();
test();
printf("%d",*p);
return 0;
}
void test(void)
{
static int chacha=0;
p=&chacha;
}
答案 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;