第四章 - 复合类型

一,一维数组

1.1,声明一维数组

int a[5] = {1, 2, 3, 4, 5};

1.2,一维数组与指针

*a = a[0];
*(a + 1) = a[1];

1.3,一维数组作为函数参数

void display(int nums[], int n){
    for(int i = 0; i < n; i ++){
        cout<<nums[i]<<"  ";
    }
}

1.4,动态创建一维数组

int n = 20;
int *p = new int[n];

二,二维数组

2.1,声明二维数组

int a[4][5] = {
    {2, 3, 4, 5, 6},
    {7, 3, 8, 2, 1},
    {8, 3, 4, 5, 0},
    {5, 9, 3, 0, 2}
}

2.2,二维数组与指针

二维数组的数组名是指向第一行的指针,指向第 i 行的指针

a + i

可以把二维数组看做有多个一维数组组成,指向每个一维数组的指针

*(a + i) = a[i];

获取二维数组,第 i 行,第 j 列的元素

*(*(a + i) + j) = a[i][j];

2.3,二维数组作为函数参数

void display(int nums[][5], int n){
    for(int i = 0; i < n; i ++){
        for(int j = 0; j < 5; j ++){
            cout<<nums[i][j]<<"  ";
        }
        cout<<endl;
    }
}

2.4,动态创建二维数组

void display(int **nums, int row, int col){
    for(int i = 0; i < row; i ++){
        for(int j = 0; j < col; j ++){
            cout<<nums[i][j]<<"  ";
        }
        cout<<endl;
    }
}

int main(){
    int row = 3, col = 4;
    int **p = new int*[row];  //创建一个指针数组,将其首地址保存在b中         
    for(int i = 0; i < col; i ++){
        p[i] = new int[col];  //为指针数组的每个元素分配一个数组
    }
    //初始化二维数组
    for(int i = 0; i < row; i ++){
        for(int j = 0; j < col; j ++){
            p[i][j] = j;
        }
    }
    //输出二维数组中的值
    display(p, row, col);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/cloud323/article/details/80881866