总结一下基础和我遇到的问题 (关键字 -- 存储类型)
来源:互联网 发布:智通预算软件 编辑:程序博客网 时间:2024/05/29 12:35
关键字:32个(一定要记住)
存储类型
auto:自动型
只能修饰局部变量,但是我们注意到在定义全局变量时,存储类型也为缺省,那全局变量的默认,其实他的默认是静态存储类型;
这里补充一个小知识点:局部变量未初始化,其值为随机值;
全局变量未初始化,其值为0;
register :寄存器存储类型
这个类型不常用,他申请变量存放着寄存器里,为了尽可能的提高速度,他的存取速度要比内存快的多,而且,register变量的地址不能用 & 来获取,原因是register变量不存储在内存中(注意:有些情况是当你用&取地址时,可以打印出地址,这代表这个寄存器变量现在在内存中,他没有申请寄存器没有成功,因为寄存器个数有限);
参考:http://www.cnblogs.com/reality-soul/p/6369792.html
只有局部自动变量和形式参数才能够被定义为寄存器变量,全局变量和局部静态变量都不能被定义为寄存器变量。而且,一个计算机中寄存器数量是有限的,一般为2到3个,因此寄存器变量的数量不能太多。对于在一个函数中说明的多于2,3个的寄存器变量,C编译程序会自动地将寄存器变量变为自动变量。 受硬件寄存器长度的限制,寄存器变量只能是char、int或指针型,而不能使其他复杂数据类型。由于register变量使用的是硬件CPU中的寄存器,寄存器变量无地址,所以不能使用取地址运算符"&"求寄存器变量的地址。(选自博客园 knightsoul)
static:静态型
作用:
限制作用域:1)修饰局部变量时,变量只作用在本函数内;
2)修饰全局变量时,变量只作用在本文件,外部函数不能用;
限制变量存储域:将变量存储在静态区,只初始化一次,下次调用时引用上一次的值;
这个类型做题的话经常遇到,在之后的工作中也非常常见,比如一个项目的话,是多个人一起去做,肯定会遇到这样的一种情况:(A写的文件需要调用B文件的中的变量int b,那么A会在他的文件中使用extern int b,那么如果C的文件中也存在变量b的话,就会造成出错,这里C就可以使用static int b,这样b就不会别外部引用)
看一下这个例子:
#include <stdio.h>
static int j;
int fun1()
{
staticint i = 0;
i++;
returni;
}
void fun2()
{
j= 0;
j++;
}
int main()
{
intk;
inta;
for(k= 0;k < 9;k++)
{
a= fun1();
fun2();
}
printf("%d\n",a);
printf("%d\n",j);
}
结果是 10 1
注意:static语句只执行一次,之后再次调用时不再执行
extern:外部引用
外部引用变量,编译时需要将多个文件同时编译,用来表示该变量或函数不是本文件定义,而是来自于其他模块的变量或函数的声明,提示链接器遇到该变量或函数时,到其他模块解析和绑定此标识符。
- 总结一下基础和我遇到的问题 (关键字 -- 存储类型)
- 总结一下基础和我遇到的问题 (关键字 -- 数据类型)
- 总结一下最近整合spring4和hibernate4遇到的问题
- 存储类型关键字总结
- php 总结一下遇到的问题
- 总结一下iOS应用发布到app store的过程和遇到的问题
- 总结一下今天在编程中遇到的问题和相应的解决办法
- 总结一下使用Swift遇到的几个小问题和几个小知识点
- 总结一下以前的工作中遇到的问题1
- 总结一下PHP扩展开发中遇到的问题
- 开发过程中 遇到的一些小问题 总结一下
- 总结一下最近面试遇到的一些问题吧
- 总结一下今天工作中遇到的问题
- 总结一下自己Java实习后遇到的一些问题。
- 刚开始玩openMP,总结一下遇到的一点小问题。
- 我遇到的c++、mfc问题总结(2)
- 我学tensorflow遇到的问题【总结】
- 刚接触ubuntu,遇到的小问题总结一下(持续更新)
- 131. Palindrome Partitioning
- 使用eclipse打包maven
- docker registry v2认证备忘
- Qt之操作数据库(SQLite)实例
- 修改win7的登录界面背景与关机背景
- 总结一下基础和我遇到的问题 (关键字 -- 存储类型)
- 安卓textview edittext 中inputType的类型
- 字符串正则匹配
- 关于C中指针的引用,解引用与脱去解引用
- Echarts如何实现在地图上画饼图
- 1266: [AHOI2006]上学路线route
- POJ
- (人脸识别1-1)——ubuntu+win7双系统安装
- Android集成百度钱包