一. 一维数组
1.定义
相同类型的多个数据得到一个有序的序列(线性表)。
#define N 30//宏常量
int a[N];//长度是定值
int n=30;
int c[n];//长度是变量,但是长度不能变
int *d;//可变数组,指针
d=new int[n];//C++用法,给d分配空间,可变,线性表中常用,写法d[0]、d[1].....
2.初始化
1)赋值的数据个数小于等于N。
2)给出一部分数据赋值,剩下的数据会由0自动补齐。
3)当一个数组不初始化,则数据都是随机数。
int c[N]={1,2,3};//这种赋值方式正确
int c[N];
c[N]={1,2,3};//注意:这种赋值方式错误
int x=1;//初始化
int y;
y=1;//赋值,两种情况不同
3.数组的一些操作
赋值和输出
c[0]=1,c[1]=2,c[2]=3;
//或者利用循环赋值和输出
for(i=0;i<N;i++)
scanf("%d",&c[i]);//scanf("%d",c+i);
for(i=0;i<N;i++)
printf("%d",c[i]);//printf("%d",*(c+i));
4.数组做函数参数
数组名是数组的首地址,数组名是个指针变量
a就等价于&a[0];
//主程序中
int c[n];
f(c,n)//数组名做实参
//函数中
void f(int a[],int n);//形参带[],不用带长度
二.二维数组
1.定义
#define M 4
#define N 10//还是利用宏常量
int a[M][N];//二维数组是由M个长度为N的一维数组组成
a[i];//是长度为N的一维数组
a[i][j];//为二维数组中的一个元素
2.逻辑存储与物理存储
按行存储
a[0][0],a[0][1],...,[0][N-1],a[1][0],...,a[1][N-1],...,a[M][0],...,a[M-1][N-1];
3.二维数组的初始化
int a[][N]={1,2,3}//先填第一行,然后是二三行,若二三行没有,可降维,变成一维数组,只有第一个[]可不填
int a[][N]={{1},{2},{3}//分行输入,其余由0补齐
4.二维数组做函数参数
//主程序中
int c[M][N];
f(c,N)//同样也是二维数组名做实参
//函数中
void f(int a[][N],int n);//形参带[],只有第一个长度可以省略
三.字符串
1.表示字符串
“”的长度为0,但是空间为1,存在着结束符'\0';
双引号代表着串,而单引号代表着字符注意区分;
在C++中,提前声明string类型,输入和输出用cin、cout即可,s.length代表着字符串的长度,可以直接比大小。
在C中,相比于C++比较麻烦,用的比较少,利用strcmp( ,)<0来比较,输入跟输出的方式多样,注意的点多;长度用strlen来计算。