大一新生,刚刚接触编程,学了一段时间发现单纯看书和做练习并不能让我的知识体系完整扎实.于是尝试写点博客看看效果,希望对我有帮助吧.
在cpp上,列出了以下五种存储类型:(不考虑线程的概念)
1.自动:
默认的存储类型,最早接触,通常不用关键字,在需要与其他类型做区分时,可以加上auto关键词.在块作用域中声明,具有自动存储期,即程序进入该块时变量存在,退出该块时变量被销毁.
2.寄存器:
关键字为register,其性质与自动变量很相似,块作用域,自动存储期.但是因为它被存储在寄存器中而不是内存中,所以无法获取它的地址.同时要注意的是,声明寄存器变量只是一种请求,最终是否将该变量存在寄存器中则是由编译器来决定.但无论是否被存入寄存器,该变量都无法获取地址.
3.静态无链接:
在块内用关键字static声明变量,具有块作用域,但它的存储期是静态的,也就是说,在该变量被创建后,程序停止运行才会释放该变量.在循环中,但程序再一次运行到该声明时,会跳过去.自动初始化为0.
4.静态外部链接:
作为外部变量作用域自然是文件,静态存储期,感觉叫全局变量比较舒服,也比较熟悉,这种变量在所有块外面声明,可以在同一个程序不同翻译单元(很奇怪的名字,反正就是不同的文件)中作用.如果要在一个文件中使用另一个文件的全局变量,要用关键字extern.自动初始化为0.
5.静态内部链接:
这个与全局变量的区别在于声明时需要加上static关键字,同时无法被其他文件使用.自动初始化为0.
这里static的含义并不相同,第三种意为存储期是静态的,而第五中意为不能在文件之间共享.