第12章作用域、存储类与链接要点记录

来源:互联网 发布:osx win7 linux c博客 编辑:程序博客网 时间:2024/05/16 11:57

代码块作用域只局限于该代码块,但可以人为规定是自动存储或者静态存储。

文件作用域的变量从它定义处到文件结尾都是可访问的,内部链接就是仅该文件本身可用;外部链接不光自己可用,其他文件都可用。

 

静态存储就是变量在程序执行期间一直存在,至于能不能访问那是另一回事。

换句话说,作用域和链接属性决定了变量的访问权限,自动/静态存储决定了变量的值要不要保留。

剩下的事情无非就是这3种属性的组合。

作用域和链接

static关键字感觉设计的不好,用在代码块作用域,弄得自动/静态存储的事情;用在文件作用域,弄得内部/外部链接的事情。

违背了计算机科学的基本原则——“产生二义性”。

还有auto,register,extern既没有什么作用,还容易让人糊涂,怪不得c的创始人自己吐槽——“尽管c看起来丑陋”


把变量都设成外部变量,就不用为了使用参数和指针在函数之间传递信息而费劲了,乍看起来很有吸引力。

然而多年来,无数程序员的经验给出了无可置疑的证据,随意使用外部变量带来的危险性远比表面吸引力大得多。

———————————————————————————————————————————————

简单介绍了一下随机数,seed种子与rand。

动态内存分配malloc与free。

值得注意的是void *指针,尽管它能代替任何其他类型的指针,初学者会觉得:“太好了,不用指明每一种具体类型;全都使用void *一起搞定。" 但是它不是万能型,因为没有类型检查,非常危险。

0 0
原创粉丝点击