#define、const以及sizeof
来源:互联网 发布:网络视频直播平台排行 编辑:程序博客网 时间:2024/06/03 11:34
写在前面的:虽说是c++的学习,但是基本语法和面向对象的思想多少懂一点,所以觉得转c++学习不是很难,所以就开始了学c++。虽说以前自己学的是java,但是编程经验不是太多而且基本上没怎么深入的学习。其实当一开始学习编程的时候大家都说从一门语言开始,然后深入学习这门语言。但是实际上本来编程就不是一个短期的过程,很少有人一开始就精通哪门语言,基本是大体语法会、思想有点然后就开始了这条“程序猿”之路。我也是看到了大公司的笔试题以及剑指offer等书上的题目大部分都是c/c++才开始学c++的。希望这次一定要认认真真的把一些细节弄清楚,不要认为以前的时间都浪费了。
一:#define 宏定义大家都应该清楚,反正我是不清楚有以下的注意事项:
1.
<span style="white-space:pre"></span>#define PI 3.1415926
注意行尾没有分号。
2.宏定义的变量约定命名为大写的。
3.如果后面的宏用到了前面的,要用宏的名字表示比较好。
4.宏定义尽量不用++之类的运算符以免产生边界效应,所以在用表达式定义宏的时候要用括号括起来如:
<span style="white-space:pre"></span>#define SECOND_YEAR (60*60*24*365)缺点:
1.#define没有类型,从他的声明中可以看出他没有变量类型,也就是说当你定义一个宏的时候可以随意指定他的类型,因为他根本就没类型,但是在使用的位置肯定是有类型的,所以要注意。
2.宏定义的替换发生在编译期间,也就是说替换了多少个就保存了多少个副本,相比于const内存是要浪费一点的。但是因为他的替换实在编译期间,所以在运行时你根本无法改变他的值,因为他是一个直接数连变量名都没有,所以其值不可变,const的值通过一些办法是可以改变的。(后面会谈到)
二:const
const修饰变量时:
1.该变量只能读
2.可以避免不必要的内存分配,和java的常量池很想于是类比一下final就可以想通的,在运行过程中const类型的变量在内存中只有一个副本。
3.const的常量是可以通过曲线救国的方式修改的:
const int i = 0;int *j = (int *)&i;j = 1;const修饰方法时:
首先看一下比较诡异的声明方法:
Class Test{ public : int cout = 100; int tt() cost{ return cont; }}
const竟然放在后面,不知道原因或许是因为特殊的东西有特殊的待遇吧。
这里要注意的是声明为const的方法不能调用非const的方法
- #define、const以及sizeof
- sizeof运算符,const ,strlen,#define
- sizeof,if和switch,const和define···
- const 以及与define 的区别
- const, static, define 以及inline的区别
- const & define
- const & define
- "const" & "#define"
- const和#define的用途和比较以及注意事项
- PHP中常量以及const与define的区别
- const, static, inline, #define的用法以及关系
- #define与sizeof详解
- const和#define的不同以及 const修饰指针的几种情况
- C++与C中const的比较以及const和define的比较
- 一些看起来很特殊的for循环代码,以及sizeof和strlen代码运行机制,还有#define
- C++中的几个关键字(static、const、#define、inline、sizeof与strlen、指针与引用、new与malloc)
- const和#define
- const and #define
- selenium webdriver 环境搭建–java
- HDU 5071 Chat (模拟)
- SQLite可视化管理工具汇总
- IntentFilter
- HTML5教程:第二章 HTML5的常用元素与属性---文本格式化元素
- #define、const以及sizeof
- 算法导论第七章快速排序的C++实现
- Perl——正则表达式(四) 查找替换s///
- JDBC中Statement与PreparedStatement的区别
- jquery file upload 后台收到的文件名中文乱码, filename中文乱码
- centos 完全移除mysql
- C++中inline函数的使用
- 1410282310-hd-Seinfeld
- 第9周项目6-2换分币问题