1.整型浮点型数据在scanf输入时要加取地址符。
2.输出字符型、整型还是浮点型数据要选择相应的格式控制符。浮点型,整型的内部组织机制是不同的:有符号的整型第一位代表的是符号正负,而后面剩余部分按照二进制来存储;32位平台下的单精度浮点型数据存储分为1位符号位,8位指数位,23位位数位。输出数据时按照输出格式控制符来解析这四个字节,所以格式控制符与类型不同,数据会解析错误,而这不属于语法上面的问题。
3.switch语句与if.....else语句的效率问题。当选择分支大于四个时,switch语句中会形成跳转表,跳转表的形成使得switch语句效率大于同分支数量的if...else语句。
4.变量的生命周期问题。在一个程序中,操作系统为程序存储不同数据而划分出不同的区块,栈,堆,数据段,代码段等。
局部变量存储在栈中,依靠栈针的上下移动来控制变量的生存,而这些变量的生存都是由操作系统进行管理的,所以在其变量定义中的类型生命前有一个默认的anto自动管理。栈的大小接近1M。
程序员由malloc,realloc申请的空间是在堆中开辟的。程序运行过程中进行申请,其生存周期由程序员自己管理,在使用完毕后通过free来释放该空间。堆的大小远远大于栈大小,由当前计算机内存大小决定。
全局变量,静态变量在数据段中进行申请,由管理其生存。
5.C和C++的区别:
1>宏观上,C++是一个综合体,综合了C,面向对象思想,元编程(即模板),STL等,所以是C++包含了C
2>微观上,C++与C在const上的区别,C++中的const是一个常量,必须初始化,且在编译过程中就被取代,一般不生成符号。而C中的const是一个常变量。
C++和C中对符号的不同,C++中的符号采用了命名粉碎技术从而使得C++支持重载等特性
C++中的头文件可以没有.h尾缀
g++和gcc均能编译C++和C语言,使用gcc编译C++时,必须为该程序中所用的库指明所引用的库及地址
6.static的作用:生存期和有效域不同,局部变量的生存期只在区域控制块中,随着栈帧的上下移动而死亡,静态变量全局变量的/生存期是从定义到程序结束,但是其有效域看是全局变量还是静态局部变量还是静态全局变量
1>静态全局变量和全局变量 --》其存储方式相同,存储与数据段,如果没有初始化就在bss段,但是静态全局变量因为静态的限制所以只在此文件中有效
2>静态局部变量和局部变量,静态局部变量存储于数据段,而局部变量存储与栈区,在一次函数结束后静态局部变量的值依然存在
3>静态函数和普通函数,静态函数的作用域只在本文件中
4>C++中的静态成员变量和静态函数