#define, const与inline

#define、const与inline

在c++中有一组功能相似的关键字:#define、const以及inline,本文旨在阐述三者的区别。

一、#define

#define,也称为宏定义,源于C语言。在程序进入编译器之前,便会被预处理程序处理。如下,程序员编写代码时,可以用PI代替常量3.14,代码在编译之前会被预处理程序进行处理:即用3.14替换PI。因此,编译器的符号表中只含有3.14,而没有PI,给调试程序带来不便。

#define PI 3.14

二、const

  • const是c++中的一个关键字,可用来指定一种语义上的约束,即被const修饰的对象不便被修改。
  • const是通过编译器来实现修饰对象不可被修改的。
  • const既可修饰全局常量,静态对象,也可修饰类内部的静态成员和非静态成员。
  • const与指针
  1. const修饰的是p指向的对象,即a,也就是说可以改变p,但是不能改变p指向的对象。
const int *p=a;//值是常量,不可变
  1. const修饰的是指针,即p,因此p本身不可被修改,但是可以修改p指向的对象。
int * const p=a;//地址是常量,不可变
  1. p及p指向的对象均是常量,都不可变
const int * const p=a;//值和地址都是常量,均不可变

三、inline

  • inline用于声明内联函数。
  • 对于内联函数,编译器编译时会用函数体代码替代内联函数的调用语句
  • 内联函数是建议性的,即inline只能建议编译器使用内联的方式,但是是否采用内联形式则与具体的编译器有关。
  • 内联函数一般用于逻辑简单的函数

总结

  • #define与const用于定义常量,实际使用中建议使用const
  • inline用于函数,只是建议性的,是否使用与具体编译器有关。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值