4.1 数组
存储多个同类型值 在内存中连续
type name{size};
4.1.1 程序说明
int yams[3] ;
sizeof yams; //3*4
sizeof yams[0]; //4
4.1.2 数组初始化规则
只有在定义时可以初始化 数组不能赋给另一个数组
type name[size]; //数组定义
初始化时,提供的值可以少于数组的元素数目 //其他元素自动设置为0
如果[ ]内为空 则编译器计算元素个数
short thing[ ] = {1, 5, 3, 8};
int num_elements = sizeof things / sizeof (short);
4.1.3 C++11数组初始化方法
初始化时 = 可以省略
{ }内可以不含任何东西
列表初始化禁止缩窄 // 列表内值的范围 不能大于(<=) type 的范围
4.2 字符串
C风格以\0结尾
char name[ ] = " " ;
4.2.1 拼接字符串常量
4.2.2 在数组中使用字符串
sizeof 数组长度
strlen 存储在数组中的字符串的长度
4.2.3 字符串输入
cin 使用空白字符作为输入完成
4.2.4 每次读取一行字符串输入
cin.getline( , )
cin.get( , ); cin.get(); cin.get( , ); // get() 不丢弃换行符
cin.get( , ).get();
4.2.5 混合输入字符串和数字
使用get( ) 捕获换行符 //cin.get( ) 或者(cin>>year).get()
4.3 string类简介
头文件string 类位于std名称空间中
可以使用数组表示法访问存储在string对象中的字符
4.3.1 C++11字符串初始化
char f [ ] = { " "}
char s[ ] {" "}
string t = {" "}
string f {" "}
4.3.2 赋值拼接和附加
string str1;
string str2 = " panther"
str1 = str2;
string str3; str3 = str1 + str2; str1 += str2;
4.3.3 string类的其他操作
头文件cstring
strcpy(charr1,charr2);
strcat(charr1,charr2);
4.3.4 string类 I/O
未初始化的数组内容是未定义的
getline(cin,str);
4.3.5 其他形式的字符串字面值
4.4 结构简介
struct name{ };
name a; name b;
a.
4.4.1 在程序中使用结构
提倡使用外部结构声明
可使用pal.name[0] 访问 pal[0] 没有意义
4.4.2 C++11结构初始化
列表初始化 也可以不包含东西 不允许缩窄
4.4.3 结构可以将string类作为成员吗
可以的
4.4.4 其他结构属性
结构可以作为参数传递给函数 也可以让函数返回一个结构
结构可以赋值给另一个结构
可以在结构定义时,创建结构变量;更进一步可以直接初始化
还可以声明那个没有名称的结构变量 在结构定义之后 创建结构变量
4.4.5 结构数组
struct s{
int a;
char b[20];
};
s gifts[100];
cin >> gifts[0].a;
结构数组初始化
s guest[2] = {
{20, "abcd"},
{40, "qwer"}
};
4.4.6 结构中位字段
允许占用特定位数的结构成员
4.5 共用体
只能同时存储其中一种类型
4.6 枚举
只能将定义枚举时使用的枚举量赋给这种枚举的变量
枚举量可以被提升为Int int不能转换为枚举
如果int值有效 可以通过强制类型转换 将整型赋值给枚举变量
枚举变量名称可以省略
4.6.1 设置枚举量的值
可以通过赋值运算显示设置枚举量的值
值必须是整数 也可以只定义其中一些枚举量的值 未被初始化的枚举量的值比前面大1
4.6.2 枚举的取值范围
上限 大于最大值的最小的2的幂 减去1
下限 若不小于0 则为0 否则 与找上限方法相同 但加上负号
4.7 指针和自由存储空间
& :获得地址 * :获得地址所指向的值
4.7.1 声明和初始化指针
int * p; // p是指向int的指针 或者int* *p是地址指向的值 为int类型
int *ptr //强调*ptr是一个int类型的值
int* ptr//强调ptr是一个int*类型,指向int的指针
对于每一个指针都需要使用一个*
int higgens = 5; int * pt = &