C语言学习笔记 类型修饰符
2016-01-29 19:37
363 查看
类型修饰符 :对内存资源存放位置的限定。
关键字:auto、register、static、const、extern、volatile
1、auto :默认实现的,auto int a;默认分配的内存区域都是可读可写的区域。如果auto所在 { } 内,则数据存储在栈空间中。
2、register :限制变量定义在寄存器上的修饰符,CPU上的寄存器。读取速度快。
用途 定义一些快速访问的量。
但是,编译器会尽量的安排CPU的寄存器去存放修饰的变量,如果CPU寄存器已经满了,则数据将会存在存储器中。
&(取地址)对register 修饰的变量是不合法的,不起作用的。
int a;
register int a;
用vim编译器 测试一下结果
然后用gcc 编译器编译一下 gcc -o build 001.c
出现了一个waining
暂时不管它,继续运行 ./build 去执行 生成的build,就能看到a1的地址。
修改程序,测试一下register是否真的不能读取地址。
发现 有error ,说明rigister 修饰的参数不能被读取地址。
3、static 静态修饰符,修饰以下变量:
(1) 函数内部的变量(2)函数外的变量;(3)函数
4、extern 外部声明
5、const 常量的定义,修饰只读的变量,但是通过某些方法也能改变常量
6、volatile 修饰不优化编译的关键字。 修饰变量值的修改,不仅仅可以通过软件,而且还通过其他方式
关键字:auto、register、static、const、extern、volatile
1、auto :默认实现的,auto int a;默认分配的内存区域都是可读可写的区域。如果auto所在 { } 内,则数据存储在栈空间中。
2、register :限制变量定义在寄存器上的修饰符,CPU上的寄存器。读取速度快。
用途 定义一些快速访问的量。
但是,编译器会尽量的安排CPU的寄存器去存放修饰的变量,如果CPU寄存器已经满了,则数据将会存在存储器中。
&(取地址)对register 修饰的变量是不合法的,不起作用的。
int a;
register int a;
用vim编译器 测试一下结果
然后用gcc 编译器编译一下 gcc -o build 001.c
出现了一个waining
暂时不管它,继续运行 ./build 去执行 生成的build,就能看到a1的地址。
修改程序,测试一下register是否真的不能读取地址。
发现 有error ,说明rigister 修饰的参数不能被读取地址。
3、static 静态修饰符,修饰以下变量:
(1) 函数内部的变量(2)函数外的变量;(3)函数
4、extern 外部声明
5、const 常量的定义,修饰只读的变量,但是通过某些方法也能改变常量
6、volatile 修饰不优化编译的关键字。 修饰变量值的修改,不仅仅可以通过软件,而且还通过其他方式
相关文章推荐
- map(c++)
- string专题(c++)【1】
- 11条最全面的C/C++编码规范总结
- C++ 编程模块
- C语言不用任何参数遍历数组的方法
- c语言中static 用法
- c++之枚举
- Information on the C++ language
- C语言字符检测函数:isalnum、isalpha、isascii、iscntrl、isdigit、isgraph、islower、isspace、ispunct、isupper
- 石子合并问题
- C++ eclipse 开发环境搭建
- POJ 3259 Wormholes 链式前向星+SPFA
- SPFA
- return临时变量的问题
- [转载]MFC截屏之一:C++截取整个屏幕,并生成图片(基于MFC)
- 详解c++指针的指针和指针的引用
- C++11 线程池
- char*,char a[ ],char*a[]学习、sizeof、位与字节
- 过河卒
- C语言之链表