首先说说我写这篇日志的目的:对于大部分编程的人来说学c语言应该都从vc的(当然也有用tc的),但我觉得这里面有很大一部分朋友并不知道其实你一直用c++的编译器去编c和运行c语言的代码。当然c++是支持绝大部分的c的,但它们是不同的,之所以你能用那些编写和运行c语言代码没有发现有什么不对之处(其实你偶尔也会发现有时你的c代码运行时会怪怪的。)
1) 在C语言中,初始化一个字符数组的方式很容易产生错误,就是数组很可能没有足
够的空间存放结尾的NULL字符.C++于对此此了一些改进、像char b[3] ="Bob"这样的表达式
被认为是一个错误,但它在C语言中却是合法的。
2) 类型转换既可以写成像float(i)这样看上去更顺眼的形式,也可以写成(float)i这样
稍显怪异的C语言风格的形式.
C++允许一个常量整数来定义数组的人小
connst int size=128;
char a[size];
这在C++中是允许的但在C语言中却是错误的.
3)c++ 声明可以穿插于语句之间.在C语言中,一个语句块中所有的声明都必须放在所有
语句的前面.C++去掉了达个专横的限制,做得非常好当然这种做法也会引起与C语言的
不兼容,那为什么不进行得彻底一些,为恐怖的C语言声明语法提供一种更简单的替代方案?
4)在C++中,用户代码不能调用mian()函数,但在C语言中却是允许的(不过这种情
况极为罕见)
5)完整的函教原型声明在C++中是必须的,但在C语言中却没这么严格.
6)在C++中由typedef定义的名字不能与已有的结构标签冲突,但在C语言中却是充
许的(它们分属不同的名命空间).
7)当void*指针赋值给另一个类型的指针时,C++规定必须进行强制类型转换,但在C
语言中却无必要。
8)在C++中,声明可以出现在语句可以出现的任何地方.在C语言中的代码块中,所
有的声明必须出现在所有语句的前面.
9)在C++,字符常量的类型是char,但在C语言中,它们的类型是inL也就是说,
在C++中,sizeof('a')的结果是1.而在c语言中,它的值要大一些。
希望这些对大家有些用处,另:以上9条是摘自《c专家编程》的。个人觉得这本书还可以,能够解决学c语言中遇到的很多难晚理解的问题。