本系列文章是配合我发布的《C++编程基础》系列视频教程的知识点总结和补充。
数组是用来顺序存放相同类型数据的集合,根据实际需要,如果集合存放固定数量的数据,使用静态数组即可,如果集合中数据的数量不确定,则应选择用动态数组来进行存储。
静态数组
静态数组一旦声明,它的长度就是固定的,所以称它是静态的。
声明数组时,类似于声明变量时的格式,只是在数组名后面多了一对中括号[ ],其中包含数组的长度,可以是一个整型常量(注意,是在声明时,在调用数组中的值或为数组中某一项进行赋值时,中括号[]中的值是该项对应的索引值,数组中第一项的索引值为0)。
int scores[6]=
{23,43,98,93,87,24};
或
const int LENGTH=6;
int scores[LENGTH]=
{23,43,98,93,87,24};
如果声明数组时每个数组项的初始值已经给出,可以省略中括号中的长度值,如:
int scores[]=
{23,43,98,93,87,24};
声明一个整数型的静态数组时,如果不对数组初始化每一项的值,未被初始化的项值默认为0。
声明一个长度为8的整数型数组,默认初始化所有数组项值为0:
int zeros[8]={};
初始化前两个数组项的值,其余默认为0:
int partial[7]={23,89};
声明一个字符型数组:
char word[]={'B','l','u','e'};
或
char hello[]="Hello";
打印字符型数组的值:
cout<<"word[]:"<endl;
cout<<"hello[]:"<endl;
输出结果:
word[]:Blue
hello[]:Hello
改变字符数组中某一项的值,单字符要用单引号括起,如:
word[0]='C';
输出结果:
word[]:Clue
对字符数组进行赋值不能直接用 word=“new word”; 这样的语句,而需要用strcpy函数:
strcpy(word, "Warrior");
使用函数strlen(数组名)可以得到数组的长度:
cout<<"word[]:"<endl;
cout<<"the size of array word:"<<strlen(word)<<endl;
这样赋了新值后打印出来的结果为(在不同机子上可能会得出不同的结果):
word[]:Warrior
the size of array word:7
请注意这里虽然显示数组word的长度发生了变化,但不能确定它在其他环境下仍能得出如下结果,这样使用可能会增加程序的不确定性而影响兼容性,因此应该尽量避免,还是应该以静态数组的长度不能更改为准则。
以上是一维数组,还可以有多维数组,例如二维数组,可以把它理解为有行有列的一张表,数值所在的行数和列数定了,数值就定位了。
声明一个3行2列的二维整数型数组:
int class_scores[3][2]=
{{23,45},{78,89},{43,98}};
为数组中的某一项赋值:
partial[4]=33;
class_scores[1][1]=37;
动态数组
如果数组的长度会发生变化,则应考虑使用动态数组vector存储数据。使用vector类中的函数前,要先在程序头部添加包含该类的预处理指令。
#include
另外,还要声明使用命名空间std中的vector。
using std::vector;
声明长度为2的整数型动态数组:
vector<int> dynamicArr(2);
为动态数组赋值:
dynamicArr[0] = 12;
dynamicArr[1] = 9;
在该数组尾部添加一个值为31的新数组项:
dynamicArr.push_back(31);
打印数组中某项的值:
cout<0] <<endl;
cout<1] <<endl;
以及打印最后一位数组项的值:
cout<dynamicArr.size()-1] <<endl;
输出结果:
12
9
31
字符串 string
使用字符数组的方式描述字符串非常麻烦,因此推荐使用string这个类来存储字符串类型的数据。
使用string类中的函数前,要先在程序头部添加包含该类的预处理指令。
#include
另外,还要声明使用命名空间std中的string。
using std::string;
string可被视为一个动态的数据类型,它的长度可以变化,因此使用起来也更加方便,字符串的值要用双引号来括起,在编写代码时,键入双引号、单引号、分号时要特别注意不要用中文输入法来进行输入,计算机处理时会认为它们并不同于英文输入法下的对应字符。
string strName="Nini";
string strSurname="Li";
可以直接使用等号=进行赋值,而不需要借助strcpy()函数。
strSurname="Lee";
可以直接使用加号+将两个或更多的字符串相连:
cout<" "+strSurname<<endl;
输出结果:
Nini Lee
可以用string类中的函数append()将两个字符串相连接,新的字符串将赋给调用这个函数的字符串变量。
strName.append(strSurname);
cout<endl;
输出结果:
NiniLee