数组
数组(array) 声明通用格式为:
typeName arrayName[arraySize].
arrayName指定元素数目,必须为整型常量或const值。(不能是变量)
int a[3]={0,0,2}; //正确
int b[3];
b[3]={1,1,1}; //错误
只有在定义数组时才能使用初始化,此后不能使用。 如果只对数组的一部分进行初始化,编译器会将其他元素设置为0.
int a[5]={0};
int a[5] {};
int a[5] {1,2,3,4,5};
其中前二组方法都可以将数组初始化为0,后二种则是C++11中列表初始化的新功能,省略‘=’。
字符串
char cat[5]={'a','b','j','k',' '}; //字符串
char dog[5]={'a','f','g','v','c'}; //字符数组
C-风格字符串的特殊性质:以空字符结尾。
这时如果将两个字符数组cout,cat数组遇到空字符便会自动停止,而dog数组会继续向下输出知道有一个内存位置为空字符。(尽管内存中的空字符往往很多,但尽量不要冒这个险)
char cat[6]="abcde";
这种初始化方法默认将剩余数组位置赋为空字符。应确保数组够大,能存储所有字符——包括空字符!!!
面向行的字符串读入
1、getline() getline函数读整行,通过换行符确定输入结尾,随后此函数将丢弃换行符(不错的性质),通用格式如下:
cin.getline(arrayName,length);
2、get() get函数读整行,通过换行符确定输入结尾,但是随后此函数不会丢弃换行符,通用格式:
cin.get(arrayName,length);
这时如果两个get连用,就会发现第二个get会读入失败,这是因为第一个get未丢弃的换行符成为了第二个get读到的第一个字符,于是乎,第二个get什么也没有读到就结束了。
结决方法自然是有的:
cin.get(a,3);
cin.get();
cin.get(b,4);
大功告成。因为不带参数的cin.get()将会读入一个字符,包括换行符。也可以将get()进行拼接:
cin.get(a,3).get();
cin.get(b,4).get();
cin.getline(a,3).getline(b,4);
(cin>>a).get();