博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
define,const, enum,inline区别用法
阅读量:4659 次
发布时间:2019-06-09

本文共 1118 字,大约阅读时间需要 3 分钟。

define
没有类型,不能指明一组数据之间具有关联性,
有参宏的时候,逻辑不符合计算逻辑    容易产生误解
宏的结尾不用分号
宏的作用域是从定义位置开始,到文件结束,如果要终止宏定义的作用域,则可以用#undef 宏名称
#define PI 3.14
.......
#undef PI
 
const
const对象一旦创建后就不得在改变,所以 const对象必须初始化
在不改变const对象的操作中还有一种是初始化,如果利用一个对象去初始化另一个对象,则他们是不是const都无关紧要
int i = 42;
const int j = i;
int k = j;           以上均正确
另外,在默认状态下,const对象仅在文件内有效,当多个文件中出现了同名的const变量,其实等同于在不同文件中分别定义了独立的变量
 
const int ci=1024;
const int & r1 = ci;        //这里是正确的,因为引用及其对应的对象都是常量
r1 = 50;                         //这里是错误的 r1是常量的引用
int & r2 =ci;                   //错误,因为试图让一个非常量引用指向了一个常量对象
总结: 因为不允许直接为ci赋值,当然也就不能通过引用去改变ci 因此对r2的初始化时错误的,假设合法,则可以通过r2去改变它来改变对象的值,这显然是不对的
    用什么类型创建。用什么类型去保存
 
const int *p=&a        //不用通过指针修改它所指向的位置的值
int const *p =&a       //同上
int * const p              //不能修改指针指向的位置    可以修改值
总结:const 在 * 左边,即不能修改 它指向位置的值 (*p就是指)加上const
           const 在 * 右边    即不能修改它指向的位置,因为const 在p左边 p是地址变量
 
enum
写法注意:
  1. enum DIR
  2. {
  3. up,
  4. down,
  5. left,
  6. right //最后一个不用写逗号
  7. };//不要忘记分号
默认从0开始 0-3
 
inline函数
 
  1. #define f(x) x*x
  2. inline int fun(int x)
  3. {
  4. return x*x;
  5. }
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8. printf("%d\n", f(3 + 5));
  9. printf("%d\n", fun(3 + 5));//不会造成歧义,先把参数算出来,再参与计算。
  10. return 0;
  11. }
内联函数会对参数进行检测,不会造成歧义
内联函数会节省空间消耗 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/Tempt/p/9987544.html

你可能感兴趣的文章
SpringBoot(六) Web Applications: Embedded Containers(嵌入式容器)
查看>>
【BZOJ 4665】 4665: 小w的喜糖 (DP+容斥)
查看>>
python 中关于 djando 的基础操作
查看>>
Git 的 .gitignore 配置
查看>>
Language Integrated Query ----序
查看>>
第一天来
查看>>
【HDU】1542 Atlantis
查看>>
计算机专业的学生必须掌握的五门课程
查看>>
解决Android SDK Manager更新时出现问题
查看>>
Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
查看>>
第二章 第四节 添加SWT库
查看>>
docker file
查看>>
总结一些常见的国际标准化组织
查看>>
webpack 使用经验记录
查看>>
sanic连接mongo
查看>>
python--文件操作
查看>>
乐肖产品逻辑
查看>>
ASA防火墙忘记密码之后的恢复步骤
查看>>
前端之练习1
查看>>
Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 8
查看>>