[C学习]C中的变量(?)(4个类型)

来源:互联网 发布:淘宝第三方引流平台 编辑:程序博客网 时间:2024/06/07 19:55

1>auto变量

局部变量如果不声明为static,就都是动态分配空间的,存储在动态存储区中.auto这个关键字可以省略的....

Question:自动变量编译时一定要有值?笔记上有的,什么原因?自动变量如果不赋初值的话是一个不确定的值,即是一个垃圾数据.它的分配空间是运行时分配的,空间的值也是不确定的.还是有问题,为什么一定是在编译时了???

2>static变量

函数中的局部变量(重点区分)的值在函数结束后值并不消失,而是可以在函数下次再调用的时候,可以保留其原值(修改前的还是修改后的啊?),即占用的空间不释放,里面的值是上次调用结束时的值(成功回答前一个问题.)就是这句话啊,成功的把我误导到static变量与全局变量打成一片...全局变量是在函数之间传递值的,而static是局部变量,在本函数多次调用时可以传递值.(Question:static的值可不可以给别人用啊?既然是局部变量,作用域就是本函数,应该是不可以的吧!)怎么想到了寺庙了,类比一下,一座庙保一方水土,进进出出的都是本地人,外来香客完全不起作用,虽然寺庙精神永存,可是属于本地文化财产...

说明:a>static变量是静态存储类型,存放在静态区中,总个程序运行时都不释放.

       b>static变量是在编译时赋初值的,即只赋初值一次,以后每次调用的时候不再重新赋初值而只是保留上次函数调用结束的值.(成功回答上一篇[C学习]C中变量(?)中的?)在.NET中给static设了断点后,每次运行都点先去一次,就是这个原因吧.

       c>如果不赋初值的话,static自动赋为0(数值型)和空字符(对字符变量,为空,而不是NULL,NULL是在数据库中出现代表未知吧,C中的NULL是给指针准备的.)

----------虽然今天很有积极性,可是为了明天能持续这个状态,不能再写了-----就此打住-----

       d>static变量虽然在函数调用后还存在,可是不能被其它函数引用.(我的寺庙理论啊!)