1.进行双目运算的两个基本类型变量,如果类型不一样,会进行隐式上升转换,如int转double。
2.写自定义函数的目的是,提高代码的可读性,对代码进行复用。不会提升效率,因为调用函数要进行压栈,不调用函数就不用进行压栈,调用函数降低了效率。
3.C语言类型包括整型,实型(float单精度实型,double双精度实型),字符型。C++增加了逻辑型(true和false,C中0代表假,非0代表真)。
4.在switch中,首先选择符合条件的段,然后一直执行到switch结束或者遇到break语句。 ----C++ primer
5.带#号的都是预编译命令,sizeof是操作符。
6.'\0'在内存中实际代表0
7.
栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。栈顶的地址和栈的最大容量是系统预先规定好的,在Windows下,栈的通常的大小是2M,如果申请的空间超过栈的剩余空间时,将 提示overflow。所以能从栈获得的空间较小。
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储 的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小 受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
但是栈的操作效率比堆的操作效率高,因为操作系统提供了对栈的直接操作指令。
8.auto会忽略底层const
9.scanf不能限制精度但能限制长度,printf中%f可用为float和double,在scanf中%f和%lf才有区别。printf默认是右对齐,加上-后是左对齐。其他更多的用法见百度。
10.C++中的“多态”分为静态多态和动态多态。静态多态表示函数重载,模板函数,动态多态表示虚函数。
11.malloc失败会返回null,new失败会抛出异常,将指针free或者delete后,一定要置为null。如果不对野指针进行操作,不会出现问题,一旦对野指针进行解引用,就会出现问题。
12.内敛函数和#define不同,内联函数在编译时是“函数”替换,#define只是简单的字符串替换。