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变量。

0 0
原创粉丝点击