C++数组与指针

二维数组

什么是二维数组?

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

定义并初始化:int bb[2][3] = { { 1, 2 ,3}, { 4, 5,6 } };

该定义意味着:bb是一个包含2个元素的数组,其中每一个元素都是由3个整形大小组成。

bb[0]:bb[0][0],bb[0][1],bb[0][2];  bb[0]代表第一个元素的数组首地址

bb[1]:  bb[1][0],bb[1][1],bb[1][2];   bb[1]代表第二个元素的数组首地址

二维数组bb相当于定义了2个一维数组,每个一维数组存储了3个的内存地址,每个地址可以存储一个整形大小的值

代码:

#include <iostream>
using namespace std;
int main()
{


    int bb[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
    cout << "int bb[2][2] = { { 1, 2 }, { 3, 4 } };" << endl;
    cout << "bb=" << bb<< "  *bb=" << *bb << "  bb[0]=" << bb[0] << "  &bb[0]= " << &bb[0] << "   &bb[0][0]=" << &bb[0][0] << endl;
    cout << "bb+1=" << bb + 1 << "  *bb=" << *bb + 1 << endl;
    cout <<"**(bb + 1)=" <<**(bb + 1) << endl;//同列跨行
    cout << "*(*bb + 1)=" << *(*bb + 1) << endl;//同行跨列
    system("pause");
    return 0;

}

运行结果:

现在就不难理解bb=*bb=bb[0]=&bb[0]=&bb[0][0]  

代码中我们可以理解:bb+1 跨行同列   *bb+1 为同行跨列

猜你喜欢

转载自blog.csdn.net/qq_39016425/article/details/82854348