c++二维数组的创建与定义

二维数组的定义:

在c语言中,二维数组定义可以是静态二维数组,也可以是动态二维数组。当我们定义一个二维数组的时候,需要两个声名符,行和列。

首先是静态数组的创建:当我们创立一个三行四列的二维数组的时候,我们可以用以下几种方法

方法一:直接确定数组行列:

int array[3][4];//定义int类型的二维数组,但是没有指出具体元素
int array[3][4] = {1,2,3,4,5};//定义int类型的二维数组,但是没有指出所有的元素

int array[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};  
int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
//扁平化数组和标准数组写法

方法二:指明列数创立数组:

int array[][4];
int (*array)[4];//本质上是定义了一个数组指针array,array所指的对象包含四个int型元素的一维数组

方法三:动态分配,不需要指明行列数:

  • 使用new申请内存空间:
int **dp=new int*[3];//动态申请二维数组3x4

for(int i=0;i<3;++i){

  dp[i]=new int[4];

}

采用了指针数组的方法,指针数组指的是一个数组,数组内部有指针。使用new申请了sizeof(int*)x5个字节大小空间,并将其地址值存放在二级指针dp中。for循环表示遍历dp数组里的每一个元素(元素类型为int*),并申请大小为4的一维数组。

int (*dp)[5]=new int[5][5];

采用了数组指针的方法,数组指针是指针,指向数组。new申请了sizeof(int)5X5的内存大小,并将其地址值存放于指针dp中。dp为数组指针,指向数组int[5]。

  • 使用malloc申请(当申请二维数组的时候,有三种方法:二级指针、数组指针、一维数组申请):
//首先是malloc申请一维数组,申请包含十个int类型的数组:
int *array = (int*)malloc(10*sizeof(int));
int main()
{
    int **p = (int **)malloc(3*sizeof(int*));
    for(int i = 0; i < 3; i++){
        p[i] = (int*)malloc(4*sizeof(int));
    }
}

malloc申请二维数组的方式:首先使用指针数组int*,并在此基础上再开辟4个内存空间。

int main(int argc, char const *argv[])
{
    int (*p)[4] = (int (*)[])malloc(sizeof(int) * 4 * 5); //开辟一片空间 数组指针数组的长度为5个,每个子数组的长度为4

 上述代码表示使用数组指针的方式开辟空间

1.int *a[常量] 定义一个数组,该数组的每个成员都是int* 指针
2.int (*a)[常量] 定义一个指针, 该指针指向一个int数组!

  • 使用vector:
  vector<vector<int>> test(row, vector<int>(col)); //声明一个二维数组 

    //初始化,其实不初始化也是可以的,vector默认是0
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            test[i][j] = 0;
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值