C++中使用malloc(), free()定义初始化一维、二维、三维数组
2018-01-28 21:28
519 查看
#include "stdio.h" #include "stdlib.h" int main() { printf("Hello main \n"); int Depth = 2; int Height = 3; int Width = 4; //=========================================================// //========================1D Array=========================// int *array1D0 = NULL; array1D0 = (int*)malloc(Width*sizeof(int)); printf("\nAccess array1D0 elements:\n"); for(int width=0; width<Width; width++) { array1D0[width] = width; printf("%d ", array1D0[width]); } printf("\n"); //=========================================================// //========================2D Array=========================// int *array1D1 = NULL; int **array2D1 = NULL; array1D1 = (int*)malloc(Height*Width*sizeof(int)); array2D1 = (int**)malloc(Height*sizeof(int*)); for (int height = 0; height<Height; height++) { array2D1[height] = array1D1 + height*Width; } printf("\nAccess array2D1 elements:\n"); for (int height=0; height<Height; height++) { for (int width=0; width<Width; width++) { array2D1[height][width] = height+width; printf("%d ", array2D1[height][width]); } printf("\n"); } //========================================================// //======================3D Array==========================// int *array1D2 = NULL; int **array2D2 = NULL; int ***array3D = NULL; array1D2 = (int*)malloc(Depth*Height*Width*sizeof(int)); array2D2 = (int**)malloc(Depth*Height*sizeof(int*)); array3D = (int***)malloc(Depth*sizeof(int**)); for (int height=0; height<Depth*Height; height++) { array2D2[height] = array1D2 + height*Width; } for (int depth=0; depth<Depth; depth++) { array3D[depth] = array2D2 + depth*Height; } printf("\nAccess array3D elements:\n"); for(int depth=0; depth<Depth; depth++) { printf("depth=%d\n",depth); for(int height=0; height<Height; height++) { for(int width=0; width<Width; width++) { array3D[depth][height][width] = depth+height+width; printf("%d ", array3D[depth][height][width]); } printf("\n"); } printf("\n"); } //================================================// free(array1D0); free(array1D1); free(array2D1); free(array1D2); free(array2D2); free(array3D); printf("\nGoodbye main \n"); }
运行结果:
Hello main Access array1D0 elements: 0 1 2 3 Access array2D1 elements: 0 1 2 3 1 2 3 4 2 3 4 5 Access array3D elements: depth=0 0 1 2 3 1 2 3 4 2 3 4 5 depth=1 1 2 3 4 2 3 4 5 3 4 5 6 Goodbye main
相关文章推荐
- C++中关于一维、二维、三维动态数组的定义
- C++程序员学Java系列之十二:一维数组定义,初始化,遍历,最值及异常
- 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的
- 【转】C++中new动态定义一维数组,二维数组,三维数组
- 动态数组的使用(一维动态数组、二维、三维、N维)
- C++中动态定义一维数组,二维数组,三维数组
- 简洁明了,C++中动态定义一维数组,二维数组,三维数组
- C++中动态定义一维数组,二维数组,三维数组
- malloc/free和new/delete的主要区别以及c与c++关于结构体定义使用的区别
- C++中动态定义一维数组,二维数组,三维数组的方法
- 定义一维、二维、三维数组
- C++中一维,二维动态数组的建立,与内存的释放delete 和 delete[] 的使用
- 简洁明了,C++中动态定义一维数组,二维数组,三维数组
- [黑马程序员]_数组定义、初始化及使用
- C++中malloc/free和new/delete 的使用
- 关于结构体定义时初始化及结合数组使用问题 示例
- java数组定义与初始化,类型转换,instanceof的使用
- C语言学习8:malloc返回的void*类型指针不可以做更改,free双重释放,二维数组的初始化和打印,a和a[0]和a[0][0]的区别,数组指针(*p)[3],指针数组*a[10],动态内存分配版约瑟夫环,动态分配版去空格和逗号处理,二级指针与二维数组互用
- [黑马程序员]_数组定义、初始化及使用
- 用vector<CStringArray>会报错;数组(一维、二维、三维)的动态申请及用vector的表示方法