i是局部变量 也就意味着i是栈上的内存 栈上的内存不会被释放 只会被重复利用
创新互联专业为企业提供周至网站建设、周至做网站、周至网站设计、周至网站制作等企业网站建设、网页设计与制作、周至企业网站模板建站服务,十年周至做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
f()函数结束后,i的内容可能无效,并不一定无效,这取决于你后续的操作是否覆盖了i的内存
你这里面仅仅是f()执行完立马输出,并没有其他操作覆盖i的内存 所以输出了5
staticArr();函数返回后,arr占用的内存已经被程序释放, 但读这个内存地址里的内容还是
合法的
问题是这个内存被释放后, 可能又被其他程序调用, 其内容有可能在你读取前已经被更改, 所以你读出的内容可能不变, 也可能已经变了。
当然可以!
C语言程序的最基本的模块就是函数,
该程序规定:任意函数都可以调用其它任意一个函数,包括函数本身;
1、函数调用自己本身, 这种称为递归;
通过递归,计算1+2+3+...+n值的代码:
2、自定义函数调用其它自定义函数的例子:
这个例子就是主函数调用自定义函数fun2,然后fun2调用另一个自定义函数fun1;
函数内部定义的变量叫做局部变量,一旦函数执行完毕,这些存储这些变量的空间就会被收回。但收回归收回,里边的数值有可能还没有被改变,而你又存下了这个地址,因此,你依旧可以访问到。
但是被收回的空间是危险的,它们不再由你的程序占有,它们也许下一秒就会被其他程序占用,并改变,而你的程序执行得很快,刚释放就输出了,其他程序刚好没来得及修改,因此可以输出结果。
如果你让程序执行得久一会儿,再输出,可能又是另一番景色了吧。