欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第四章 复合类型

程序员文章站 2022-07-04 22:49:06
复合类型:基于基本类型和浮点类型创建 4.1 数组 一、定义: 数组是一种数据格式,能够存储多个同类型的值。 二、数组声明: 条件: 存储在每个元素中的值的类型; 数组名; 数组中的元素数; 格式: typeName arrayName[arraySize]; 注意:表达式arraySize指定元素 ......

复合类型:基于基本类型和浮点类型创建

4.1 数组

一、定义:

数组是一种数据格式,能够存储多个同类型的值。

二、数组声明:

  条件:

  1. 存储在每个元素中的值的类型;
  2. 数组名;
  3. 数组中的元素数;

  格式:

  

typename arrayname[arraysize];

  注意:表达式arraysize指定元素数目,它必须是整型常数(如10)或const值,也可以是常量表达式(如8*sizeof(int)),即其中所有的值在编译时都是已知的。具体地说,arraysize不能是变量,变量的值是在程序运行时设置的。然而,可以使用new运算符来避开这种限制。

  使用:可以单独访问数组元素。方法是使用下标或索引来对元素进行编码。c++数组从0开始编号。

  有效下标值的重要性:如果将一个值赋给不存在的元素months[101],编译器并不会指出错误。但是程序运行后,这种赋值可能引发问题。

  sizeof运算符:

  注:sizeof运算符返回类型或数据对象的长度(单位为字节)。如果将sizeof运算符用于数组名,得到的将是整个数组中的字节数。

三、数组的初始化规则

  1. 只有在定义数组时才能使用初始化,以后就不能使用了,也不能将一个数组赋给另一个数组;
  2. 然而,可以使用下标分别给数组中的元素赋值;
  3. 初始化数组时,提供的值可以少于数组的元素数目;
  4. 如果初始化数组时方括号([])为空,c++编译器将计算元素个数。

四、c++11数组的初始化方法:(新增功能)

  1. 初始化数组时,可省略等号(=);
  2. 可不在大括号内包含任何东西,这将把所有元素都设置为零;
  3. 列表初始化禁止缩窄转换;

stl提供了一种数组替代品——模板类rector,c++11新增了模板类array。

4.2字符串

一、c++处理字符串的方式:

  ①第一种来自c语言,常被称为c-风格字符串;

  ②另一种基于string类库的方法。

二、c-风格字符串

  1、存储在char数组中。

  2、特殊的性质:以空字符(null character)结尾,空字符被写作\0,其中ascii码为0,用来标记字符串的结尾。

  3、字符串定义、赋值

    ① 大量单引号

char cat[4] = {'c','a','t','\0'};

    ②使用一个双引号括起来字符串,这种字符串被称为字符串常量或字符串字面值。

char bird[11] = "mr.cheeps";
char fish[] = "bubbles";

注意:字符串常量(使用双引号)不能与字符常量(使用单引号)互换。

  ‘s’是字符串编码的简写表示。在ascii系统上,‘s’只是83的另一种写法;

  “s”实际上表示的是字符串所在的内存地址。

  4、拼接字符串常量:

  任何两个有空白(空格、制表符和换行符)分隔的字符串常量都将自动拼接成一个。

  注意:拼接时不会再被连接的字符串之间添加空格。忽视\0。

  5、在数组中使用字符串:

  要将字符串存储到数组中,最常用的两种方法:

①将数组初始化为字符串常量;

②将键盘或文件输入读入到数组中;

  sizeof运算符指出整个数组的长度:15字节;但strlen()函数返回的是存储在数组中的字符串的长度,而不是数组本身的长度。(strlen()函数不把空字符计算在内。)

  6、字符串输入的缺陷(cin)

①cin使用空白(空格、制表符和换行符)来确定字符串的结束位置,这意味cin在获取字符数组输入时只读取一个单词。

②输入字符串可能比目标数组长。

  7、每次读取一行字符串输入

  需要采用面向行而不是面向单词的方法。

  istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()。这两个函数都读取一行输入,直到到达换行符。

  区别:getline()将丢弃换行符,而get()将换行符保留在输入序列中。

a.面向行的输入:getline()