四、复合类型

1、数组

float loans[20];//loas的类型不是“数组”,而是“float数组”。

C++数组初始化,只需提供一个用倒好分割的值列表(初始化列表),并将它们用花括号括起来即可。

int cards[4]={3,6,8,10};//okay
int hand[4];//okay
hand[4]={5,6,7,9};//not allowed
hand=cards;//not allowed
//只有在定义数组时才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组

2、C++11的列表初始化新增功能:首先,可省略等号(=),其次,可不再大括号内包含任何东西,这将把所有元素都设置为零;第三,列表初始化禁止缩窄转换。
3、结构
C++允许在声明结构变量时省略关键字struct

struct inflatable goose;//keyword struct required in C
inflatable vincent;//keyword struct not required in C++

和数组一样,使用由逗号分隔值列表,并将这些值用花括号括起。

inflatable duck={"Daphne",0.12,9.98};
struct inflatable//struct declaration
{
    char name[20];
    float volume;
    double price;
};
inflatable hat;//hat is a structure variable of type inflatable,hat是一个结构,而hat.price是一个double类型的变量
inflatable woopie_cushion;//type inflatable variable
//C++允许声明结构变量时省略关键字struct
struct inflatable goose;//keyword struct required in C
inflatable vincent;//keyowrd struct not required in C++

访问类成员函数(如cin.getline())的方式是从访问结构成员变量(cincent.price)的方式衍生而来的。
4、共用体(union)

union one4all
{
    int int_val;
    long long_val;
    double double_val;
};
one4all pail;
pail.int_val=15;//store an int
cout<<pail.int_val;
pail.double_val=1.38;//store a double,int value is lost
cout<<pail.double_val;

pail有时可以是int变量,而有时又可以是double变量。成员名称标识了变量的容量。由于共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度。
共用体的用途之一是,当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间。
5、枚举(enum)

enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet};
spectrum band;//band a variable of type spectrum
band=orange;//valid
++band;//invaild

6.字符串输入
cin是如何确定已完成字符串输入呢?由于不能通过键盘输入空字符,因此cin需要通过别的方法来确定字符串的结尾位置。cin使用空白(空格,制表符,换行符)来确定字符串的结束位置,这意味着cin在获取字符数组输入时只读取一个单词。读取该单词后,cin将该字符串放到数组中,并自动在结尾添加空字符。
7.每次读取一行字符串输入
每次读取一个单词通常不是最好的选择。具体来说,需要采用面向行而不是面向单词的方法。幸运的是,istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()。这两个函数都读取一行输入,直到到达换行符。然而,随后getline()将丢弃换行符,而get()将换行符保留在输入序列中。
8.冒泡排序
(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
(2)对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
(3)重复以上步骤,每次比较次数-1,直到不需要比较。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值