C编程的细节(1)

1.整型浮点型数据在scanf输入时要加取地址符。

2.输出字符型、整型还是浮点型数据要选择相应的格式控制符。浮点型,整型的内部组织机制是不同的:有符号的整型第一位代表的是符号正负,而后面剩余部分按照二进制来存储;32位平台下的单精度浮点型数据存储分为1位符号位,8位指数位,23位位数位。输出数据时按照输出格式控制符来解析这四个字节,所以格式控制符与类型不同,数据会解析错误,而这不属于语法上面的问题。

3.switch语句与if.....else语句的效率问题。当选择分支大于四个时,switch语句中会形成跳转表,跳转表的形成使得switch语句效率大于同分支数量的if...else语句。

4.变量的生命周期问题。在一个程序中,操作系统为程序存储不同数据而划分出不同的区块,栈,堆,数据段,代码段等。

局部变量存储在栈中,依靠栈针的上下移动来控制变量的生存,而这些变量的生存都是由操作系统进行管理的,所以在其变量定义中的类型生命前有一个默认的anto自动管理。栈的大小接近1M

程序员由mallocrealloc申请的空间是在堆中开辟的。程序运行过程中进行申请,其生存周期由程序员自己管理,在使用完毕后通过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++中的静态成员变量和静态函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值