C语言里的结构是一种复合数据类型,如下述代码中的Employee类型。在该类型的单一对象里,同时存储了员工姓名、是否已退休、月薪、性别等信息。
1 | struct Employee { |
在使用C++进行程序设计时,我们通常使用第13章中讨论的类(class)▲来达到类似目的,结构体并非必须,故本章以在线方式提供。
Codelearn
分享Python,C/C++相关的技术文章, 海洋饼干叔叔@重庆大学
C语言里的结构是一种复合数据类型,如下述代码中的Employee类型。在该类型的单一对象里,同时存储了员工姓名、是否已退休、月薪、性别等信息。
1 | struct Employee { |
在使用C++进行程序设计时,我们通常使用第13章中讨论的类(class)▲来达到类似目的,结构体并非必须,故本章以在线方式提供。
“李杜文章在,光焰万丈长”,唐诗无疑是中国古代文学最灿烂的篇章之一。现代人发表论文,会互相引用,喝酒吃饭,也经常会谈及谁谁谁是我哥们。作为当时最重要的文学形式,唐代的诗人也经常会在诗文中提及自己的好朋友。杜甫比李白小十一岁,二者相识于杜甫父亲杜闲家中,彼时正是李白因触怒权贵放归山林之时。两人一见,杜秒变小迷弟。杜在《与李十二白同寻范十隐居》中描绘了两人的亲密关系:”余亦东蒙客,怜君如兄弟。醉眠秋共被,携手日同行”。不仅如此,在两人各奔东西后,杜甫压抑不住对李白的思念,写了多首提及李白的诗。例如《梦李白》中云:”三夜频梦君,情亲见君意”。能连续三个晚上做梦都梦到李白,可见交情不浅。
通过分析全唐诗中各位诗人之间的“引用”关系,可以描绘出当时诗坛的大致朋友圈图景:谁跟谁熟? 谁是圈子里的带头大哥? 全唐诗有4万多首,人工一首一首地筛查费时费力,这种重复的统计性质的工作正是计算机最擅长的。
1 |
上述宏定义SQUARE(x)用于求“参数”x的平方,这个宏很容易被使用者误认为是函数。宏是由预处理器处理的,它有着函数的形式却没有函数调用的代价。我们不建议初学者使用宏,因为使用宏的收益远不足以抵消其带给初学者的风险。
C语言的枚举类型(enum)用于表达对象所属的类别。比如,人分男女,大学的学生则又分为专科生、本科生、硕士研究生和博士研究生。C语言中的联合(union)类型则为我们提供了操纵和解读“数据”的独特方式,它允许对同一块内存以不同的方式进行解读和操纵。
在C++程序中,上述两项特性使用得不多,故本章内容以在线方式提供。至于C++中的枚举类(enum class),我们在第13章讨论。
C语言的设计者还给我们准备了难以理解的另一种参数数组定义格式,以便让我们知难而退。
1 | const int i = 0; |
上述代码所定义的指针是常量型的,同时,该指针指向一个常量型整数。
经由操作系统,用户可以为应用程序的运行指定额外参数,进而影响应用程序的行为。对于C/C++程序而言,经由操作系统提供的运行参数可由main()函数获取并处理。
多维数组与二维数组本质相同,只是维度更多而已。在日常程序设计过程中,高于二维的多维数组使用得不多,故以在线方式提供给读者。
C风格的字符串就是以0结尾的字符数组。通过cstring头文件,可以引入一系列的字符串运算函数,以完成字符串比较、拼接、复制等操作。
C/C++里for循环的初始化语句、测试及更新表达式可以是任意合法的语句/表达式,甚至可以空缺。当初始化语句及测试表达式空缺时,需要用一个分号占位。灵活运行上述特性,可以写出很“复杂”的for循环。从软件工程的角度看,不必要的使用“技巧”会使得程序难以理解和维护,实践中,我们应该避免这种过分依赖于技巧的程序写法。