C关键字之const、static、register
来源:互联网 发布:大学生犯罪知乎 编辑:程序博客网 时间:2024/04/29 15:32
一、Const
>作用:
在liunx C中const修饰一个变量,设置该变量的属性为只读。
>注意事项:
1,用const修饰的变量不能用变量名修改其所对应的空间,但是可以用指向它的指针去改变它的值,所以它并不是被声明为了常量。
const int num = 5;
num = 10; /*出错!num 声明为只读变量,不能通过变量名去修改其对应空间的值*/
int *p = #
*p = 10; /*允许,因为num毕竟不是被被声明为了常量*/
2,用const修饰变量时需同时赋初值,否则就不能通过变量名直接赋初值了
const int num;num = 5;/*出错!不能通过变量名修改其值*/
>用途:
主要用于修饰函数形参
二、static
>作用:
static既可修饰变量又可修饰函数;
static修饰的局部变量称静态局部变量,延长变量的生命周期直到程序运行结束。
static修饰全局变量,该全局变量只能在本文件使用。
static修饰函数,该函数只能在本文件使用。
>注意事项:
static修饰的变量保存在全局数据区的静态数据区,没有初始化时,会被自动初始化为0
>用途:
1,静态局部变量的功能与全局变量的功能很类似,用作计数使用,但全局变量在程序中是比较危险的,尽可能少用全局变量
用static修饰的变量代替全局变量
2,当一个全局变量不想让其他文件使用时用static修饰
3,当一个函数不想被其他文件使用时用static修饰
三、register
>作用:
请求编译器尽可能地将变量保存在cpu内部寄存器中
>注意事项:
1,register只能修饰局部变量,不能修饰全变量以及函数,因为全局变量是要供多个文件共享的,不能用register修饰,不能修饰函数,因为函数中可能定义了大量的变量,而cpu内部寄存器有限。
2,register修饰的变量不能用取地址符&对变量取地址,因为变量保存在cpu内部寄存器里,不是在主存单元中。
3,register修饰变量类型必须是当前cpu所能接受的类型。
4,注意register只是暗示,不是命令
>用途:
频繁被访问的变量可以声明为register变量。
- C关键字之const、static、register
- C语言之auto、static、register、const、volatile、extern关键字
- C语言之关键字(一)auto,register,static,const的了解
- C语言关键字auto、static、register、const、volatile、extern
- C语言中关键字auto、static、register、const、volatile、ex...
- C关键字 register extern const static volatile typedef 逐一浅析
- 关键字auto、static、register、const、volatile、extern
- 关键字auto、static、register、const、volatile 、extern
- const volatile static register关键字的作用
- 关键字static,const,volatile,auto,register
- C++ 关键字 static register const volatile extern
- 关键字:register static extern const typedef volatile
- register,static,extern,const,typedef,volatile关键字
- 关键字register static const #define用法总结
- C关键字之——auto,register,static
- c语言关键字学习之 static register inline volatile
- 【C语言 C++】简单关键字Register,Const,Static,Volatile,typedef,Define的理解
- C语言中的auto, static, const, extern, register, restrict, volatile 关键字
- CardView的常用属性
- ZOJ Defuse the Bomb
- Ubuntu 14.04 ssh的安装和配置
- 台大林轩田机器学习课程笔记4----训练 VS. 测试
- Hystrix学习(6)流程
- C关键字之const、static、register
- __weak和__block探究与区别
- scope 对象在 AngularJS 中充当数据模型的作用,也就是一般 MVC 框架中 Model 得角色.但又不完全与通常意义上的数据模型一样,因为 $scope 并不处理和操作数据,它只是建立了
- 使用tcmalloc提升mysql性能
- java 动态规划判断股票最大盈利问题
- 274. H-Index
- 指针数组和数组指针的区别
- hadoop学习序曲之java基础篇--java多线程
- PART 2: 使 Shell 能读取命令