C语言 类型限定符、static、extern

1、const类型限定符

用const关键字声明的的对象,在程序中其值不能通过赋值或递增、递减等手段来改变其值

const修饰变量和数组时比较简单

const修饰指针变量时,需要看指针是修饰指针本身还是指针所指向的值

const int * a  == int const *a  用来修饰指针所指的数据是常量,不能改变该数据,指针本身本身是变量,可以指向其他内存

int * const a 用来表示指针本身是常量,不能指向其他的内存地址,所指向的数据可以改变

const int * const a 用来表示指针本身和指针所指向的数据都是常量不能改变

const修饰函数的形参指针保证函数在调用时函数的原始数据没被改变

全局变量的使用暴露了数据,程序的任何部分都可以对数据进行修改。但是利用const修饰以后可以避免数据被修改。

2、volatile类型限定符

被volatile修饰的变量告诉计算机,变量可能被代理(不是变量所在的程序)改变变量的值。常常被用于硬件地址以及在其他程序或同时运行的进程中共享的数据

3、static关键字

static用来修饰局部变量,全局变量以及函数

static修饰局部变量

一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。被修饰后局部变量的作用域没有发生改变,作用域仅限于该语句块。

static修饰全局变量

全局变量既可以在本源文件中访问,也可以在同一个工程的其他源文件中访问(用extern进行声明)

被static修饰的全局变量改变了其作用域的范围,由原来的整个工程可见变为了本源文件可见。

static修饰函数

static修饰函数改变了函数的作用域和修饰全局变量相似

4、extern关键字

此函数、变量在别处定义,要在此处引用

猜你喜欢

转载自blog.csdn.net/qq_20599225/article/details/81569729