c语言中“函数调用结束后,函数内定义的静态变量所占用的空间被释放”这句话正确吗?
1个回答
展开全部
不正确,函数内的静态变量在该函数调用结束后,且该函数所在的模块没有被释放的情况下,这个静态变量值为上次函数调用后的值。这样说比较抽象。举例说明一下:
void AA()
{
static int s_iCount; //C语言默认初始化0值
s_iCount++; //每调用AA()一次,s_iCount会自加一次
printf("%d\n", s_iCount);
}
void main()
{
AA(); //第一次调用
AA(); //第二次调用
}
运行输出:
1
2
说明:AA()中的 s_iCount,只能在AA()中访问操作,不能在其外的函数中操作,也不能在main()中直接访问。
void AA()
{
static int s_iCount; //C语言默认初始化0值
s_iCount++; //每调用AA()一次,s_iCount会自加一次
printf("%d\n", s_iCount);
}
void main()
{
AA(); //第一次调用
AA(); //第二次调用
}
运行输出:
1
2
说明:AA()中的 s_iCount,只能在AA()中访问操作,不能在其外的函数中操作,也不能在main()中直接访问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询