static, extern的用法和区别, const用法

当使用static来修饰局部变量, 那么会延长局部变量的生命周期, 并且会更改局部变量存储的位置 , 将局部变量从栈转移到静态区中.

只要使用static修改局部变量之后, 当执行到定义局部变量的代码就会分配存储空间, 但是只有程序结束才会释放该存储空间

用static声明或定义一个变量,那么变量只分配一次内存空间,即只执行一次.


static和extern: 函数也分为内部函数和外部函数,(内部函数:只能在当前文件中范文的函数称之为内部函数,  外部函数: 可以被其它文件访问的函数称之为外部函数)

默认情况下所有的函数都是外部函数

只要在函数的返回值前面加上一个extern就可以让函数变为一个外部函数, 由于默认就是外部函数, 所以在开发中一般情况extern没人写

如果extern写在函数的实现中, 代表定义一个外部函数

如果extern写在函数的声明中, 代表声明一个外部函数

只要在函数的返回值前面加上static就可以让函数变为内部函数, 其它文件就不能访问了

如果static写在函数的实现中, 代表定义一个内部函数

如果static写在函数的声明中, 代表声明一个内部函数


const:

const对基本数据类型的作用, 可以让基本数据类型的变量变为常量

const有两种写法, 1.写在数据类型的左边, 2.写在数据类型的右边

如果const写在指针类型的左边, 那么意味着指向的内存空间中的值不能改变, 但是指针的指向可以改变

如果const写在指针的数据类型和*号之间, 那么意味着指向的内存空间中的值不能改变, 但是指针的指向可以改变

如果const写在指针的右边(数据类型 * const), 那么意味着指针的指向不可以改变, 但是指针指向的存储空间中的值可以改变

规律:

     如果const写在指针变量名的旁边, 那么指针的指向不能变, 而指向的内存空间的值可以变

     如果const写在数据类型的左边或者右边, 那么指针的指向可以改变, 但是指向的内存空间的值不能改变




版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/liuqblog/p/4948154.html