C++:多维数组

严格的说,C++语言中没有多维数组,通常所说的多维数组其实是数组的数组。

当一个数组的元素仍然是数组时,通常使用两个维度来定义它:
一个维度表示数组本身大小,另外一个表示其元素(也是数组)大小:

int arr[2][3]

首先arr是一个含有2个元素的数组,而它的元素也有自己的维度,所以arr的元素本身又都是含有4个元素的数组;

#include 
#include
#include
using namespace std;

int main(){
    //二维数组的定义方式
    // 数据类型  数组名【行数】【列数】
    int arr[2][3] = {
        {0,1,2},
        {4,5,6}
        
    };//应理解为:大小为2的数组,每个元素是含有3个整数的数组

    //外层循环打印行数,内层循环打印列数
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            cout << arr[i][j] << "  ";

        }
        cout << endl;
    }
    //二维数组名称用途
    //1 查看占用内存空间大小
    cout << "二位数组所占空间为; " << sizeof(arr) << endl;//整型占4字节,6个数一共24字节
    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;
    //2 查看二维数组首地址
    cout << "二维数组首地址为:  " << (int)arr << endl;
    cout << "二维数组第一行首地址为:  " << (int)arr[0] << endl;
    cout << "二维数组第二行首地址为:  " << (int)arr[1] << endl;//于第一行相差12字节,因为中间有三个数,一个数4字节
    cout << "二维数组第一个元素地址为:  " << (int)&arr[0][0] << endl;
    cout << "二维数组第二个元素地址为:  " << (int)&arr[0][1] << endl;//与第一个地址相差4字节
  
    system("pause");
    return 0;
}

C++:多维数组_第1张图片
小练习:统计学生成绩

#include 
#include
#include
using namespace std;

int main(){
    //创建二维数组:3行3列
    int scores[3][3] = {
        {100,100,100},
        {90,50,100},
        {60,70,80}
    };
    string names[3] = { "蛋黄","大头","大头头" };

    //统计考试成绩,让每行的3列相加,统计总和
    for (int i = 0; i < 3; i++) {
        int sum = 0;
        for (int j = 0; j < 3; j++) {
            sum += scores[i][j];
            cout << scores[i][j] << " ";
        }
        cout << endl;
        cout <<names[i]<<"的总分为 "<< sum<< endl;
    }
  
  
    system("pause");
    return 0;
}

C++:多维数组_第2张图片

你可能感兴趣的:(c++,学习笔记)