美文网首页C/C++
const static extern限定词

const static extern限定词

作者: 片片碎 | 来源:发表于2018-05-20 18:59 被阅读5次

一.const

1.const作为数据类型的限定词,相当于定义了一个常量,故定义的时候一般就需要赋值,使用的时候,就是把数值赋给其他变量。

2.const作为指针的限定词,const可以固定指向(地址)或内容(值),原则如下:

以const为原点,*在const左边,表示值不可更改

                            *在const右边,表示指向不可更改

二.static

1.在函数外面定义,那么其那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。

2.在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化,于是,这个变量的取值就会一直保存着,也就是说,当你再次调用这个函数的时候,里面用到这个static变量时,就会发现,还是它还是上一次函数调用时的结果,生命周期从程序启动过到结束。

三.extern

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern是全局变量申明,声明不是定义,即不分配存储空间。

3-1.extern的两种使用方式

也就是说,在一个文件中定义了变量和函数, 在其他文件中要使用它们, 可以有两种方式:

1.在头文件中extern声明变量,使用的时候include头文件

2.在其他文件中直接extern

3.2.extern"C"

使用C开发的模块,经常看到使用extern C 如下,是为了能够让C ++语言也能够调用输出(Export) 的函数,需要用extern "C" 来强制编译器不要修改你的函数名。

3.3.声明和定义知识点

1.定义也是声明,extern声明不是定义,即不分配存储空间。extern告诉编译器变量在其他地方定义了。

eg:extern inti; //声明,不是定义

       inti; //声明,也是定义

2.如果声明有初始化式,就被当作定义,即使前面加了extern。只有当extern声明位于函数外部时,才可以被初始化。

eg:externdouble pi=3.1416; //定义

3.函数的声明和定义区别比较简单,带有{}的就是定义,否则就是声明。

eg:externdouble max(double d1,double d2); //声明

       doublemax(double d1,double d2){}//定义

4.除非有extern关键字,否则都是变量的定义。

eg:extern inti; //声明

       inti; //定义

注意点:

1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。

2. 尽量使用static关键字把变量定义限制于该源文件作用域,除非变量被设计成全局的。

也就是说

3. 可以在头文件中声明一个变量,在用的时候包含这个头文件就声明了这个变量。

相关文章

网友评论

  • 片片碎:笔记记录
    const和define的区别
    编译时刻:宏是预编译(编译之前处理);const是编译阶段
    编译检查:宏不做检查,不会报编译错误,只是替换;const会编译检查,会报编译错误
    宏的好处:宏能定义一些函数,方法,const不能
    宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换

本文标题:const static extern限定词

本文链接:https://www.haomeiwen.com/subject/vgvtjftx.html