C语言 局部变量存储空间的分配和释放 奇怪现象及猜想

来源:互联网 发布:java swing报表打印 编辑:程序博客网 时间:2024/05/01 05:22

C语言 局部变量存储空间的分配和释放 奇怪现象及猜想

例如:

#include<stdio.h>void foo(void){        int i;        printf("%d\n", i);        i = 777;}int main(void){        foo();        foo();        return 0;}

结果:

[root@localhost function]# ./function4.out 10067956777

猜想一:哦那肯定是我记错了,改过来记吧,应该是“函数中的局部变量具有一直存在的固定的存储空间,每次函数调用时使用它,返回时也不释放,再次调用函数时它应该还能保持上次的值”。

猜想二:教材上明明说“局部变量的存储空间在每次函数调用时分配,在函数返回时释放”,那一定是教材写错了,教材也是人写的,是人写的就难免出错,哦,连C99也这么写的啊,C99也是人写的,也难免出错,或者C99也许没错,但是反正运行结果就是错了,计算机这东西真靠不住,太容易受电磁干扰和宇宙射线影响了,我的程序写得再正确也有可能被干扰得不能正确运行。


至于为什么出现这个现象以后解答。

0 0