c语言中“函数调用结束后,函数内定义的静态变量所占用的空间被释放”这句话正确吗?

如题所述

第1个回答  2022-11-16
不正确,函数内的静态变量在该函数调用结束后,且该函数所在的模块没有被释放的情况下,这个静态变量值为上次函数调用后的值。这样说比较抽象。举例说明一下:\x0d\x0a \x0d\x0avoid AA()\x0d\x0a{\x0d\x0a static int s_iCount; //C语言默认初始化0值\x0d\x0a s_iCount++; //每调用AA()一次,s_iCount会自加一次\x0d\x0a printf("%d\n", s_iCount);\x0d\x0a}\x0d\x0a \x0d\x0avoid main()\x0d\x0a{\x0d\x0a AA(); //第一次调用\x0d\x0a AA(); //第二次调用\x0d\x0a}\x0d\x0a \x0d\x0a运行输出:\x0d\x0a1\x0d\x0a2\x0d\x0a \x0d\x0a说明:AA()中的 s_iCount,只能在AA()中访问操作,不能在其外的函数中操作,也不能在main()中直接访问。
相似回答