一维数组
语法:数据类型 数组名[数量]
初始化的形式:数据类型 数组名[数量] = {初值表};
1.可以只给部分数组元素赋值,其他未被赋值的值为0
int a[5]={1,2,3,4}; cout<<a[4]; //0 int a[5]; cout<<a[4]; //1316161161
2.static型数组、全局数组不赋初值,系统默认为0
3.使用花括号但没有初值时,系统也会给数组赋值为0
int a[5]; for(auto b:a) cout<<b<<" ";//-2037258960 32708 0 0 4198944 int a[5]={}; for(auto b:a) cout<<b<<" ";//0 0 0 0 0
4.对全部元素数组赋值时,可以不指定数组长度,编译系统会根据初值个数确定数组的长度。
为数组的某一个元素赋值:数组名[下标] =值(下标从0开始)
数组的引用:数组名[下标]
二维数组
语法:数据类型 数组名[行数量][列数量]
注意:行数量可以不写,列数量必须写
初始化的形式:数据类型 数组名[行数量][列数量] = {初值表};
1.可对部分元素赋值,其余元素的值自动取0
2.初始值可以全部写在一个花括号内,这样子系统会自动按序赋值
3.使用花括号但没有初值时,系统也会给数组赋值为0
int main() { int a[2][2]; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) cout<<a[i][j]<<" "; cout<<endl; } int b[2][2]={}; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) cout<<b[i][j]<<" "; cout<<endl; } return 0; } //0 0 //17 0 //0 0 //0 0
4.初始值也可以写在两个花括号内
int arr2[2][3] = { {1,2,3},{4,5,6} };
为数组的某一个元素赋值:数组名[行下标][列下标] = 值(下标从0,0开始)
数组的引用:数组名[行下标][列下标]
字符数组
字符串中每一个字符占用一个字节,再加上最后一个空字符
动态创建数组
一维数组
二维数组
动态创建的数组,没有初始化的话则默认值不确定
必须使用int *a=new int[5]{};才能保证默认值为全0
数组和函数
数组传递给函数
1.形式参数是一个指针:void function(int *param)
2.形式参数是一个已定义大小的数组:void function(int param[10])
3.形式参数是一个未定义大小的数组:void function(int param[])
注意:如果传递二维数组,形参必须制定第二维的长度。
二维数组:void function(int a[][3],int size)
函数返回数组
C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。
int * function();
int** function();
获取数组的大小
注意:动态创建的基本数据类型数组无法取得数组的大小
int a[3];
//第一种方法
cout<<sizeof(a)/sizeof(a[0])<<endl;
//第二种方法
cout << end(a) - begin(a) << endl;//注意是end-begin
//二维数组
int arr[5][3];
int lines = sizeof(arr) / sizeof(arr[0][0]);
int row = sizeof(arr) / sizeof(arr[0]);//行
int col = lines / row;//列
cout << row << "::"<<col << endl;
cout << end(arr) - begin(arr) << endl;//5行