《程序员面试宝典》精华 编程语言部分
2014-08-06 00:44
176 查看
《程序员面试宝典》精华 编程语言部分
正所谓取其精华,去其糟粕。本文谨记录下《程序员面试宝典》一些关键的知识点、易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录。当然这里的糟粕只是指不那么重要,或者比较简单,并不是说书写的不好。希望以后回顾时无需再看此书,只看保留在文中的精华即可。文中有少许bug,亦摘录在此。
本文专注编程语言部分,包括第五章到第九章的内容
第五章 语言细节
5.1y = z = 5,等号先计算右边,返回值是赋值后的左边的变量值
5.1 printf函数中的表达式从右向左压栈,应该先计算右方的值
5.4 float型1.0f在内存中表示为:0x3f 80 00 00
5.5 出现int常数的表达式中的变量通常都要提升至int型
5.5 赋值运算符默认从右向左结合,也就是先计算右方的值
5.5 (x&y) + ((x^y)>>1)效果是取二者的平均数
5.6 不用判断和switch语句求a、b中的较大的一个:((a + b) + abs(a - b)) / 2
5.7
extern "C"的用法:函数声明前添加,解决C/C++编译器的名字包装的不同问题
第六章 预处理、const和sizeof
6.1 求结构体中某成员的偏移量:#define FIND(struc, e) (size_t)&(((struc *)0)->e)
6.2 C语言中,
const n = 10; char carray是错误的,因为C编译器不能把const看成编译期的常量。但实验得出是正确的,bug
6.3 C++中给类成员变量添加mutable修饰符,就可以使用const函数修改
6.3 结构体对齐原则:结构体长度一定是最长数据元素整数倍,但如果大于处理器位数,则以处理器位数为对齐单位。CPU数据对齐原则是数据的内存地址必须是该数据长度的整数倍,以提高运行速度
6.3 sizeof(string) == 4
6.3 空类以及(多重)继承的空类大小都为1,但虚继承的类含有虚表指针,大小为4
第七章 指针与引用
7.1 指针与引用的区别引用总是非空的,指针可能为空,使用时要小心测试
引用不可以指向另一个对象,但指针可以更改
7.1
int *p; *p = 0;是错误的,指针p并未指向某个实际的地址
7.2
char a[] = "a"数组存放中栈中,函数返回即消失,
char *a = "a"数组存放于全局只读数据段
7.2 若类B继承类A,两者皆有成员变量,A中有f方法,则
B b; b.f()调用的是A中的f,f使用的变量也为A中的变量
7.3 指向const的指针应该是
const int *,bug
7.3
int ( *(*f)(int, int) )(int)定义了一个函数指针,接收两个int参数,返回值为一个函数指针
7.4 指向整型数组的指针声明为:
int (*p) [],指向整型的指针数组声明为:
int *p[],函数指针的数组的声明:
int (*p[10])(int)
7.5 悬浮指针指的是delete之后的指针,应该让指针等于0,使得后续程序使用此悬浮指针出错是可控的。比如第二次delete
7.5 new/delete与malloc/free的区别
前者是运算符,后者是函数
前者除了后者申请与释放动态内存的工作之外,对于非内置类型,还完成类初始化与析构操作
7.6 autoptr中拷贝时会尝试只保留一份指针,因此不适合放在容器中
第九章 STL模板与容器
9.1 如果没有重载拷贝构造函数为深拷贝,而又包含指针,那么调用拷贝构造函数时会复制指针,造成同一个指针 delete多次转载请注明作者:Focustc,博客地址为http://blog.csdn.net/caozhk,原文链接为点击打开
相关文章推荐
- 《程序员面试宝典》精华 编程语言部分
- 《程序员面试宝典》精华 面向对象部分
- 《程序员面试宝典》精华 底层部分
- 《程序员面试宝典》精华 底层部分
- 《程序员面试宝典》精华 底层部分
- 《程序员面试宝典》精华 面向对象部分
- 《程序员面试宝典》精华 面向对象部分
- JavaScript精华知识之函数部分
- MyBatis 之Result Maps最精华部分
- 知识精华部分
- JavaScript精华知识之继承部分
- 《javascript 语言精粹》精华部分
- 看到部分 行业发展的精华文章,节选一段,转载
- 《算法之道》精华 算法设计部分
- Java培训实战教程之Java基础知识精华部分(一)(二)(三)
- CCNP路由部分精华<1>
- 程序员面试宝典(第三版)部分题目解答
- 程序员面试宝典部分习题
- JAVA面试宝典之java web(精华部分)
- 精华:AJAX开发简略 (第二部分)