1.数组,C++中不允许数组的下标值为变量,只能是常量或者常量表达式,必须先定义后使用。
数组赋初值几种常见方式:
int a[] = {1,2,3,4,5};
int a[4] = {2,1,3,4};
int a[4] = {1,2},其余默认为0;
或者:int a[2];a[0] = 1,a[1] = 2;
2.二维数组:
int a[2][3] = {{1,2,3},{4,5,6}};
int a[2][3] = {1,2,3,4,5,6};
int a[2][3] = {{1}{2}};
int a[][3] = {1,2,3,4,5,6,};
inr a[3][3] = {{1,2},{},{3,4,5}};
3.数组作参数:
数组元素作参数,与普通变量做参数一样;
数组名作参数,传递的是数组的地址,形参形式:
一维数组: int max(int array[]);
int max(int array[4]);
即可指明大小,也可不指明,只是用来接收数组的起始地址而已,需说明:实参传进来时,数组的起始地址与形参的起始地址一样,所以用数组名做参数,可以改变数组内值的大小,即传值传址,如果是其他的一般变量,只能传值,不能改变原实参的值。
二维数组:int min(int array[][10]);
int min(int array[3][10]);
即必须指明列数,因为二维数组是按行在内存中存储的,要让编译器知道列,才能知道行.第二维的大小应与实参的二维大小大小一样,第一维无关紧要,编译器不检查。
4.字符数组:
char xiao_min[12] = {‘I‘,‘ ‘,‘am‘,‘ ‘,‘happy‘};//想起了一个女孩,就用xiao_min了吧
此字符数组长度为12,而存放的字符串"I am happy"的长度为10,另外两个字符被默认置为‘\0‘,‘\0‘作为字符串的终止符,所以这个字符串占11字节。所以在存放字符串时,字符数组的长度要大于字符串的最大长度,因为还要存放一个用于判断字符串结束的符号‘\0‘啊!‘\0‘只是一个用于识别的标志,并不会添加什么操作。
所以给字符串数组也可以这样赋值:
char xiao_min[] = {"I love you!"};亦或者
char xiao_min[] = "I love you!";
编译时,会自动在最后添加一个‘\0‘以识别字符串是否终止,所以以上字符串占的内存要加上一个‘\0’所占的1个字节。
5.字符数组输入输出:
一维:
cin >>xiao_min;
cout <<xiao_min;
输入China 保存‘C h i n a \0‘
输出‘China‘ 遇‘\0‘停止输出
二维:
for(i=0;i<10;i++)
cin >>xiao_min[i];
6.字符串函数(在cstring或者string.h):
a.字符串连接函数strcat():函数原型:strcat(char[],const char[]); const:保证字符串在调用过程中不被修改,连接后将第二个数组的值紧跟到第一个数组值后面,省略第一个数组的字符串末尾的‘\0’。
b.字符串赋值函数strcpy():函数原型:strcpy(char[],const char[]);将第二个数组的内容复制到第一个数组中,第一个数组中的数据被覆盖,第二个数组中的‘\0‘也会被复制。第二个参数也可以是字符串:strcpy(xiao_min,"I love you");还可以这样用strcpy(xiao_min,str2,2);即将str2的前两个字符复制到xiao_min字符数组中。
所以可以利用这个函数,给字符数组赋值字符串(仅能使用此方法给字符数组赋字符串的值)。
c.字符串比较函数:strcmp();函数原型:strcmp(const char[],const char[]);对比的既可以是数组,也可以是字符串。返回结果:
str1=str2 -> 0
str1>str2 -> 正整数
str1<str2 -> 负整数
比较规则:从左到右,按ascii码比较,直到遇见‘\0‘为止,全部字符一样=》相等,有不同,按第一个不同处来比较,之后不看。
注意:
if(str1>str2) return 0;//这是对字符串数组的地址进行比较
if(strcmp(str1>str2)) return 0;//这才是比较字符串
d.字符串长度strlen();函数原型strlen(const char[]);返回的是字符串的真实长度,不包括‘\0‘在内
例: char xiao_min[20]="You are my world!";
cout <<strlen(xiao_min); //输出值为17
以上都是C中保留的(只是为了与C兼容)。以上方法统称C-string方法
7.(建议使用->string方法)C++中处理字符串:字符串类(Gcc string占4个字节 VC++ 16字节)
#include<string>
string str1 = "China";//对比字符串数组是不允许这样的:char c[10];c = "China";cuo wu.
string str2 = "Xiaomin";
str1 = str2;
str1[0] = ‘c‘;//此时str1="china" 注意字符串常量赋值给字符串变量时,不会将常量的结束符‘\0‘复制过去
字符串输入输出:
直接使用字符串变量名:
cin >>str;
cout <<str;
字符串运算:
赋值:=
连接:+
比大小:>,<,==,!=,>=,<=
还可声明字符串数组:
string xiao_min[3] = {"I ","love ","you"}; //每个字符串此时已不含‘\0‘
string name[5]; sizeof(name) =>20字节