1,复合类型主要包含:数组、结构、联合、枚举、类、指针、引用等。

2,数组。长度必须确定。即编译阶段,数组的长度就得确定好。所以只能使用常量(#define、const)声明数组长度。如果使用变量声明数组长度,编译器就不知道要分配多少的内存空间。

3,typeName arrayName[arraySize]。数组下标从0开始。

4,数组初始化规则:

c++:数组名是数组首元素的地址,不能将一个数组直接赋值给另一个数组。并且数组的初始化可以使用列表初始化,赋值只能通过一个元素一个元素赋值。如:

上面三种都是可以初始化的方式。hotelTips的前两个元素为5.0,2.5,后面三个元素为0;totals的所有元素为0;things一个四个元素,分别为1,5,3,8.数组元素个数通过编译器计算得到。

c++11规则:列表初始化。不允许缩窄变化。

5,字符串:

c风格的字符串、string类。

c风格字符串:字符数据,后加空字符\0。空字符\0的ascii码为0.如下图: 

字符数组不一定是c风格字符串,c风格字符串一定是字符数组。

6,sizeof关键字获取变量的内存空间大小。头文件cstring中有个strlen函数,能获取字符串长度。即空字符\0前面的字符个数。不包括空字符。所以如果一个字符串m。需要至少strlen(m)+1的数组空间来存储。

7,

上图,左边时源码文件,右边是程序运行结果。

由于键盘不能输入空字符\0,所以c++使用空白符(空格、tab键、换行符)来表示字符串结束。我们输入Alistair Dreeb。IO输入缓冲区包含Alistair Dreeb,当输入name字符数组时,碰到空格就结束输入。IO输入缓冲区还剩下Dreeb。下一次输入(cin>>dessert),程序直接读取Dreeb,而不需要用户再输入数据。

8,cin.getline()。为解决上面的问题,需要调用cin.getline()每次读取一行数据。

cin.get().与上面的方法类似,唯一的区别是,前者会读取一行,并将换行符丢弃。而后者不会将换行符丢弃。

可以通过这种方式读取一行,并将换行符丢弃。(这里使用重载思想):

9,

左边是源代码,中间是程序输出,最后是解决途径。

之所以address没有机会输入,是因为程序读入1966后,还有一个换行符留在输入缓冲区。当读入address,直接将换行符认为是空行读入。可以通过最后的方式解决此问题。即将空行通过cin.get()读入。

10,string类:

 

C++PrimerPlus第6版 第四章——复合类型的更多相关文章

  1. C++ Primer Plus 第四章 复合类型 学习笔记

    第四章 复合类型 1. 数组概述 1.1 数组的定义 数组(array)是一种数据格式,能够存储多个同类型的值.每个值都存储在一个独立的数组元素中,计算机在内存中依次存储数组的各个元素. 数组声明的三 ...

  2. C++ primer plus读书笔记——第4章 复合类型

    第4章 复合类型 1. 如果将sizeof运算符用于数组名,得到的将是整个数组中的字节数. 2. 如果对数组的一部分进行初始化,则编译器把其他元素设置为0.因此,将数组中的所有元素初始化为0,只要显式 ...

  3. Java 线程第三版 第四章 Thread Notification 读书笔记

    一.等待与通知 public final void wait() throws InterruptedException      等待条件的发生. public final void wait(lo ...

  4. C#高级编程第11版 - 第四章 索引

    [1]4.2 继承的类型 1.C#不支持类的多继承,但它支持一个接口继承自多个接口. 2.单继承:单继承允许一个类继承自另外一个基类,C#支持. 3.多级继承:多级继承允许创建一个类继承自它的父类,而 ...

  5. MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  6. ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器

    ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四 ...

  7. 《C++ Primer》 第四版 第7章 函数

    <C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/94 ...

  8. 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具

    计算机图形学 opengl版本 第三版------胡事民 第四章  图形学中的向量工具 一   基础 1:向量分析和变换   两个工具  可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...

  9. 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

    <利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...

随机推荐

  1. Django视图,与数据库交互并返回数据

    环境:python 2.7.13  数据库:sqlite3(Django自带) 在学习Django的时候,遇到了困难.大概就是取到数据库数据后一直不能转成json数据.最后终于自己琢磨解决了. 要点就 ...

  2. CSS编码技巧

    前面的话 本文将从DRY.currentColor.inherit和合理使用简写这几方面来详细介绍CSS编码技巧 DRY DRY,即don`t repeat yourself,尽量减少代码重复 在软件 ...

  3. 【★】SPF(Dijkstra)算法完美教程

  4. 个人作业2——英语学习APP案例分析(必应词典的使用)

    第一部分 调研, 评测 1.使用环境:window 10 词典版本: 2.使用体验: 打开词典出现下面这一界面: 词典模块:出现了每日一词,每日一句,每日阅读板块,还提供了生词本,个人觉得最喜欢的是这 ...

  5. 201521123117 《Java程序设计》第6周学习总结

    1. 本周学习总结 2. 书面作业 Q1.clone方法 1.Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 答:在自定义的类中覆盖cl ...

  6. 201521123112《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点 1.2 使用常规方法总结其他上课内容 关于多态,多态性就是相同的形态,不同的定义.在简单点说的话就是不同类的对象对同一个消息作出的相应 ...

  7. 201521123045-----《Java程序设计》第3周学习总结

    ---恢复内容开始--- 1. 本章学习总结 2. 书面作业 1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private stati ...

  8. csv模块简单使用

    json是一种嵌套了列表与字典的格式,json包可以读取返回的json格式,json.load(html返回的对象) csv模块,用来操作csv文件, import csv #from os impo ...

  9. Project Euler:Product-sum numbers (problem 88) C++

    A natural number, N, that can be written as the sum and product of a given set of at least two natur ...

  10. C#参数详解

    参数 可选参数与命名参数 设计方法时,我们可以为部分参数设置默认值,在方法调用时就可以不提供该参数,使用其默认值.此外,调用方法时可以通过指定参数名的方式来传递参数.话不多说,请看以下示例: stat ...