9 二维数组
发布时间:
- 二维数组组定义
就是在一维数组上,多加一个维度
二维数组定义方式. 二维数组定义的四种方式:
1.数据类型 数组名[行数][列数];
2.数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数居4}};
3. 数据类型 数组名[行数][列数] ={数据1,数据2,数据3,数据4};
4. 数据类型 数组名[ ][列数]={数据1,数据2,数据3,数据4};
建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性
示例:
js
#include <iostream>
using namespace std;
int main()
{
// 方式1
// 数组类型 数组名[行数了[列数]
int arr[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
// 方式2
// 数据类型 数组名[行数了[列数〕二{{数据1,数据2},{数据了,数据4了了;
int arr2[2][3] =
{{1, 2, 3},
{4, 5, 6}};
// 方式3
// 数据类型 数组名【行数了[列数〕二{ 数据1,数据2,数据了,数据4 了;
int arr3[2][3] = {1, 2, 3, 4, 5, 6};
// 方式4
// 数据类型 数组名[][列数〕二{数据1,数据2,数据了,数据4 };
int arr4[][3] = {1, 2, 3, 4, 5, 6};
return 0;
}
- 查看二维数组所占内存空间
- 获取二维数组首地址
示例:
js
int main()
{
// 二维数组数织名
int arr[2][3] =
{
{1, 2, 3},
{4, 5, 6}};
cout << "二维数组大小:" << sizeof(arr) << endl;
cout << "二维数组一行大小:" << sizeof(arr[0]) << endl;
cout << "二維数组元素大小:" << sizeof(arr[0][0]) << endl;
cout << "二维数组行数: " << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
// 地址
cout << "二维数组首地址:" << arr << endl;
cout << "二维数组第一行地址:" << arr[0] << endl;
cout << "二维数组第二行地址:" << arr[1] << endl;
cout << "二维数组第一个元表地址:" << &arr[0][0] << endl;
cout << "二维数组第二个元素地址:" << &arr[0][1] << endl;
system("pause");
return 0;
}
memset
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。 void *memset(void *s, int c, size_t n); s指向要填充的内存块。 c是要被设置的值。 n是要被设置该值的字符数。 返回类型是一个指向存储区s的指针。
考试成绩統计: 案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如巨表,请分别输出三名同学的总成績
语文 | 数学 | 英语 | |
---|---|---|---|
张三 | 100 | 100 | 100 |
李四 | 90 | 50 | 100 |
王五 | 60 | 70 | 80 |
js
#include <iostream>
using namespace std;
int main()
{
// 创建二维数组
int scores[3][3] =
{
{100, 100, 100},
{90, 50, 100},
{60, 70, 80}};
string names[3] = {"张三", "四", "王五"};
// 统计每个人的总分
for(int i = 0;i < 3;i++)
{
int sum = 0;
for (int j = 0; j < 3; j++)
{
sum+=scores[i][j];
}
cout<< "第" <<i+1<<"个人的总分是" << sum<<endl;
}
}