这个专题的所有学习笔记来自于对武汉大学计算机学院软件工程专业大三上学期的专业必修课《系统级程序设计》的学习(教材为深入理解计算机系统CSAPP),涉及的编程语言全部为C语言和C++语言。
该博客为第0单元的学习笔记,这一单元的主要内容是对C语言的回顾、一些C语言特性的再认识,内容来自《C专家编程》这本书。
##Preliminary
1.ANSI C标准中规定的括号“(”嵌套最多可以有多少层?在32位系统中,ANSI C中规定的long int最大值是多少(以16进制表示)ANSI C标准中规定的函数定义中,最多有多少个参数?
答:32, 0x7fffffff(2147483647),31个参数
2.根据编译器设计者的思路而发展形成的语言特性:
①数组下标从0而不是1开始
②C语言的基本数据类型直接与底层硬件相对应
③auto关键字显然是摆设
④表达式中的数组名可以看作是指针
⑤float被自动扩展为double
⑥不允许嵌套函数(函数内部包含另一个函数的定义)
⑦register关键字
3.可移植的代码:
★严格遵循标准的:只使用已确定的特性、不突破任何由编译器实现的限制、不产生任何依赖由编译器定义的或未确定的或未定义的特性的输出
★遵循标准的:可以依赖一些某种编译器特有的不可移植的特性。
所以一个程序有可能在一个特定的编译器里是遵循标准的,但在另一个编译器里不遵循标准。
4.每个实参都应该有自己的类型,这样它的值就可以赋值给与它所对应的形参类型的对象(该对象的类型不能含有限定符)。
这就是说参数的传递过程类似于赋值。
所以