《C++ Primer Plus》学习笔记(第四章上)

第三章介绍了C++语言提供的基础类型:数字和字符。数字又分为整数和浮点数。它们又分了多个变种,主要区别是占用字节多少和能表达的范围大小。字符主要是char、wchar_t,C++11提供了两种新的字符类型就是char16_t和char32_t。

第四章介绍了多个元素的组合,构成新的复合类型。这里又分为该组合中的元素是否为同类型,以及元素是否可变及是否同时占用空间,出现了数组(array)、结构(struct)、共同体(union)和枚举(enum)等不同复合类型。不同场景下,根据需要选择不同的组合。

其中,数组中所有的元素必须是同类型的,比如int、long、double等,甚至它的元素是其他复合类型比如struct。数组的定义形式:type ArrayNmae [arSize];。数组的长度,必须在编译期就能确定,因此arSize不能是变量,必须是常量。

而struct、union和enum的定义形式是相同的:struct/union/enum cName { type name1;  type2 name2; }; cName作为这个复合结构的名称,内部的元素类型可以是不同的。

每个新定义的复合类型,对当前程序来说,就是自定义的新的类型,该类型名字就是cName。在使用方法上,它们和C++自带的基础类型如int、long、double都一样的。

复合类型的对象(变量)通过成员运算符(“ . ”)访问它的元素,进行读写或赋值等。

struct结构,可以包含多个不同类型的元素,在内存分配空间时是连续的。

而union共同体,定义是包含多个元素,但它们之间是或的关系。在同一时刻只能有某一个元素有效,因此它的对象的大小是这几个元素中最大的那个。通过共同体对象及成员运算符访问共同体的元素。

枚举,是另一种表示常量的方法。通过定义枚举类型及其包含的常量值,可以定义某个集合,它包含有限个数常量元素。比如用来形容候选属于待定、已录取、未录取。

在复合类型中,字符串是比较特殊的一种。它在元素都是字符,内部是通过字符数组实现的。特殊的地方是,字符串的末尾有个隐形的字符就是“空”,ASCII码位0,一般用‘\n’转义字符表示。以字符数组来存储字符串时,需要注意,不能直接对字符数组进行赋值操作,可能得到非预期的效果。应尽可能应用C++标准库中的string类来表示字符串,它可以直接赋值、通过+号拼接两个字符串、作为struct的元素等等,优点很多。

复合类型的定义的放置位置,也是值得考虑的问题。如果多个函数都利用到,那么它需要定义的函数的外部,作为全局的类型。如果只有某个函数用到,那么可以在该函数定义的开始部分,然后想定义int、double等变量一样使用它们。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值