赞
踩
在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型元素的一维数组
方法三:动态分配,不需要指明行列数:
- 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申请一维数组,申请包含十个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<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;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。