字符串就是char为类型的数组,初始化使用大括号,每个字符使用单引号,最后加上空字符。
以空字符结尾,即\0.标记字符串的结尾。
如 char cat[10] ={'f','a','t','e','\0'};
还有一种更简单的表示方式:使用一个引号括起来即可,会隐式包括空字符。而不需要我们人为添加上去。
如 char fish[] = "busdd";
每次读取一行字符串的输入
cin.getline() 通过回车键输入的换行符确定输入结尾。会丢弃换行符。
而cin.get()会将换行符保存,不丢弃。
string类使用起来比数组简单,需包含#include <string> ,视同名称空间std.
可以使用c风格字符串来初始化。如string str = "class";
可以使用cin来键键盘输入存储到string对象中。
可以使用cout来显示string内容。
可以使用strcpy、strcat进行复制、拼接。
结构体
结构体的初始化
struct Sperson
{
char name[20];
string addr;
int id;
int age;
};
Sperson person ={ "wang","shanghai",1,20};
结构体支持将string类作为成员对象。
可以使用赋值运算符(=)将结构赋给另一个同类型的结构。即使成员是数组。
还可以延伸到结构数组。
共用体(union)
像结构体一样可以存储不同数据类型,但只能同时存储其中一种类型。所以共用体的长度为最大成员的长度。
枚举(enum)
提供一种创建符号常量的方式,可以替代const.//默认情况下,第一个枚举值为0.也可以通过赋值运算符来显性设置
如enum TYPE {his,real}; TYPE Type;
如enum TYPE {his = 100,real=110}; TYPE Type;
指针
使用new创建动态数组
如果使用new[]为数组分配内存,则使用delete[]来释放。
不要使用delete释放同一内存块两次。
指针算术,指针变量加1,增加量等于它指向的类型的字节数。如 p = p +1;
数组和指针
数组的地址
数组名被解释为其第一个元素的地址,而对数组名应用地址运算符时,得到的是整个数组的地址。
所以 int a[10]; a+1 和 &a +1 是不一样的。 &a + 1 相当于 a+10 ,即下一个数组的地址。 int (*p)[10] = &a ;
