C/C++ 关键字 const,static,extern

C/C++ 关键字 const,static,extern

1.const

const 字面意思:常量,不变的量
const 的作用:

a.常量的定义

const int a = 5;

b.修饰函数形参

void function(const int &a ){
    ......
}

主要作用就是不想再传参数时为参数复制一个副本
还想不改变这个参数(比如只对数据做一些比较,并不改变或者生成变量)
跟第一条作用类似

c.修饰类的成员函数

class MYCLASS
{
public:
    int GetCount() const;
};

目的:const 修饰的成员函数无法修改任何成员变量
当不小心调用了非const 成员函数或变量时编译器会报错

d.const 修饰返回值

表示返回值不能被直接修改,函数返回值只能被const 修饰的变量接受

const char* GetChar(){
    ......
}

/* 错误演示 */        char* CHAR = GetChar();
/* 正确演示 */  const char* CHAR = GetChar();

总之,在编程中要尽可能多的使用const,这样可以获得编译器的帮助,以便写出稳定的代码

2.static

static 字面意思:静止的,不动的,(个人理解静态就是本地化)
static 的作用:

a. 在函数体内

在函数体内,一个被 static 修饰的变量在这一函数被调用的过程中维持不变,
比如之前的博客:编写一个函数,每调用一次,输出+1

b.在模块内,函数体外

在模块内,但在函数体外,被 static 修饰的变量可被模块内的所有函数调用
不能被模块外的函数访问,(本地全局变量)
例如

在 myclass.h   中定义了 static int a;
在 myclass.cpp 中,a = 5; //报错

c.在模块内

在模块内,被static 修饰的函数只可以被当前模块内的其他函数调用
(这个函数被限制在声明它的模块的本地范围内使用)

3.extern

extern可以置于变量或者函数前,以表示这个变量或函数定义在别的文件中,提示编译器在遇到此变量或函数的时候在其他模块寻找其定义。
主要使用方式有两种:

a.函数的声明中带有extern

如果函数的声明中带有extern,说明这个函数定义在其他文件中,
这样的好处是可以取代include”*.h”,在一些复杂的项目中这样使用比较方便

b.extern “C”

C++ 在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个函数中间名,而 c 语言则不会,因此会造成连接时找不到对应函数的情况。( 这也是为什么 C 语言不支持函数重载而 C++ 支持重载 )

此时 c 函数就需要用 extern “C” 进行链接制定,这告诉编译器,请保持c语言原来的名称,不要生成用于链接的中间函数名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值