什么是数组:
数组就是有序数据的集合
如果数据有内在联系,有共同的属性,,就可以把数据看为一个整体,称为数组,,数组就是用一个统一的名字代表这批数据
数组元素:
数组的数据就是数组元素
访问数组中元素必要的两部分:
数组名和元素下标(所在数组中的位置)
****只能对数组元素赋值,不能用赋值语句对整个数组赋值*****
一维数组
定义一维数组:
一般形式:
类型名 数组名 【常量表达式】;
///****注意*****///:
常量表达式的值代表 元素的个数=数组的长度
例如int a[3];/代表长度为3,但是元素储存是从0开始,也就是说a[0],a[1],a[2],三个元素最后一个元素不是a[3]而是a【2】;
常量表达式是不能宝包括变量
引用一维数组:
一般形式:
数组名[下标];
初始化一维数组:
1.定义时全部赋予初始值
int a[3]={0,1,2};
2.定义是部分赋值
int a[3]={0,1};
///没有初始值系统默认初始值为=0
3.在全部赋予初始值时可以不指定长度
int a[]={0,1,2};
//系统会自动推导数组大小 但是如果初始值的个数和定义个数不同时则长度不能省略
二维数组
定义二维数组:
一般形式:
类型名 数组名 【常量表达式1】 【常量表达式2】;
*****注意****
在c++中二维数组是按行存放,先存放第一行,在存放第二行
引用二位数组
数组名[下标][下标];
二维数组初始化:
1.按行对二维数组全部元素初始化
int a[2][2]={{0,1,},{0,1}.{0,1}};
2.一个花括号直接按顺序赋值
int a[2][2]={0,1,,0,1.0,1};
3.在第一种方法对部分初始化
int a[2][2]={{0},{0}.{0}};
其余元素默认0
4.如果全部元数赋予初始值时,行长(一维)度可以不写,但是列数(二维)不能省略
int a[][2]={0,1,,0,1.0,1};
数组作为函数参数
1.当数组名作为函数的实参时,传递的是数组的起始地址,属于地址传递
此时实参和形参都用数组名,或则指针变量
2.数组元素作为实参时和变量作为实参一样
数组名做参数时注意
1.实参为数组名形参也得是数组名或则指针,不能为变量
int max(int ma[],int a);
int max(int *p,int a);
2.数组名代表数组首地址
3.数组名作为实参为地址传递,形参改变,实参改变
字符数组*****
‘’单引号是引用单个字符
“”字符串常量
字符数组定义:
char 数组名【常量表达式】
初始化和数组相同区别在于引号
1.每个字符要用单引号引用
例如:
char a[]={'a','b','c'};
2.字符串常量初始化
char a[]={"abc"}
3.字符串未初始化部分为'\0';
c字符数组重点:结束标志'\0';
1.当遇到‘\0'时代表字符串到此结束,由它前面的字符组成有效字符串
2.在程序中往往字符串数组依靠'\0'位置来判断字符串数组是否结束,而不是根据数组长度来决定字符串的长度
3.字符数组并不要求最后一个字符必须是'\0'结尾,如果刚好字符数和数组长度一样就不存在'\0'
4.当我们用字符串常量进行初始化时。字符串常量的最后由系统加上'\0'所以导致真实长度变成字符串长度加1;
字符数组的输入输出
int str[10];
cin<<str;
cout<<str;
1.输出的字符不包括'\0'
2.当cout后面跟数组名时输出字符串,当跟的是数组元素名输出单个字符
3.如果数组长度大于实际字符串长度输出遇到'\0'结束
4.如果包括一个以上'\0'时第一个'\0'时就结束
5.cin输入字符串,字符串应该短于已经定义的数组长度,应保证小于数组长度,因为系统会补充'\0'也占有一个位置
c++提供的字符串操作函数:
头文件#include<string>
字符串拼接strcat(char[],const char[]);
1.将后一个拼接到前一个后面
2.const代表该数组调用时不被修改,
3.函数结束得到的是第一个字符数组的地址
字符串复制函数strcpy(char[],const char[]);
将第二个数组赋值给第一个数组
注意事项
1.第一个参数必须是数组名,第二个参数可以是数组名,也可以是字符串常量
strcpy(str1,str2);
strcpy(str1,"china");
2.也可以只复制前几位
strcpy(str1,str2,2);*****复制前两位
3.不能str1=str2;因为str1是数组名不能被赋值
字符串比较函数strcmp(const char[],const char[]);
1.前者大返回正整数
2.相等返回0
3.小于后者返回负整数
字符串长度函数strlen(const char[])
返回的是实际长度不包括'\0'在内