primer c++ 第二章总结
来源:互联网 发布:xp开启80端口 cmd 编辑:程序博客网 时间:2024/06/05 04:54
P39, 左值和右值,书上说左值可以出现在等式的左边或右边,右值只能出现在等式的右边。我的理解是如果变量的存储位置是只读的,那就认为是右值,如果是可读可写的,那就认为是左值。一个常量只能是右值,普通变量是左值,函数返回值也只能是右值。
P42,初始化,书上说直接初始化就是把初始化式子放在括号中,复制初始化用等号,而且直接初始化的效率更高,这一点暂时无法理解。比如
int main(){ int di(0xff); return 0;}翻译成汇编是这样的:
08048544 <main>: 8048544:55 push %ebp 8048545:89 e5 mov %esp,%ebp 8048547:83 ec 10 sub $0x10,%esp 804854a:c7 45 fc ff 00 00 00 movl $0xff,-0x4(%ebp) 8048551:b8 00 00 00 00 mov $0x0,%eax 8048556:c9 leave 8048557:c3 ret
这里是个立即数。
而
int ci = 0xff;
它的汇编代码也是一样的。
再看
int ci = 0xff;int cci = ci;它的汇编是这样的
08048544 <main>: 8048544:55 push %ebp 8048545:89 e5 mov %esp,%ebp 8048547:83 ec 10 sub $0x10,%esp 804854a:c7 45 f8 ff 00 00 00 movl $0xff,-0x8(%ebp) 8048551:8b 45 f8 mov -0x8(%ebp),%eax 8048554:89 45 fc mov %eax,-0x4(%ebp) 8048557:b8 00 00 00 00 mov $0x0,%eax 804855c:c9 leave 804855d:c3 ret
而
int di(0xff);int ddi(di);汇编出来也是一样的。可能复杂一点的非内置类型的初始化不一样吧。
关于初始化和赋值的区别,初始化只一次,赋值可多次,而且会覆盖内存中原有的东西。
P49
1、非const的全局变量默认是extern的
2、const的全局变量,默认是static,如果需要外部文件访问,必须显示制定为extern。
非const的变量也可以显示的写成 extern int a_int = 20; 不过这样没多大意义,而且会得到一个警告。
3、extern声明的变量,与普通变量,只能定义一次
//a.cpp
extern int a_int = 20;
//b.cpp
extern int a_int = 20; //error, 在a.cpp中已经有过定义
- 【c++Primer】第二章掌握C++总结
- 《C Primer Plus 》 第二章总结
- C++primer 第二章
- C++primer 第二章
- c++primer第二章
- c++primer第六版第七章第二题问题总结
- C++Primer(第二章2.1,2.2,2.3,2.4)总结
- primer c++ 第二章总结
- Primer Plus第二章总结
- c++primer第二章习题
- C++primer 第二章习题
- C Primer读书笔记第二章
- C primer plus 第二章
- C Primer Plus 第二章
- C++primer第二章笔记
- C++primer第二章习题
- C++ Primer 知识点总结 (第二章)
- c primer plus 第二章习题摘录
- JavaScript闭包使用总结
- 各品牌类型电脑BOIS中USB模式启动热键
- Nutch 1.3 学习笔记 6 ParseSegment
- 解决电脑上插上U盘无法显示盘符问题
- 对SQL server 2005安装步骤的理解(含图解)
- primer c++ 第二章总结
- swap()函数效率对比
- Struts2 过滤器与拦截器
- Nutch 1.3 学习笔记 7 CrawlDb - updatedb
- 成大事必备9种能力、9种手段、9种心态分享
- State-of-the-art
- hadoop学习之通讯协议
- Nutch 1.3 学习笔记 8 LinkDb
- 电脑硬件温度常识