堆上申请数组
来源:互联网 发布:沈阳示剑网络 编辑:程序博客网 时间:2024/06/05 23:54
- 方法一:通过数组指针申请连续的空间
#include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 // 申请a[3][2]三行两列二维数组 6 int (*a)[2] = (int(*)[2])malloc(sizeof(int)*3*2); 7 a[0][0] =1; 8 a[0][1] =2; 9 a[1][0] =3;10 a[1][1] = 4;11 a[2][0] =5;12 a[2][1] = 6;13 printf("%d\t%d\t%d\t%d\t%d\t%d\n",a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1]);14 printf("%x\n%x\n%x\n%x\n%x\n%x\n",(int)a,(int)&a[0][1],(int)&a[1][0],(int)&a[1][1],(int)&a[2][0],(int)&a[2][1]);15 free(a);16 return 0;17 }
注意,理解指针a的类型为int(*)[2]是理解算法的关键。
- 方法二:同C++,容易理解的,多个一维指针申请多次,但空间不连续。
1 int **a; 2 int i; 3 a = (int **)malloc(sizeof(int *)*3); 4 for (i=0; i<3; i++) 5 a[i] = (int *)malloc(sizeof(int)*2);
两种方法各有优劣
其实用 alloc()更规矩些
0 0
- 堆上申请数组
- C堆上申请二维数组
- C++堆上申请二维数组
- C++堆上申请二维数组
- C-动态在堆上申请二维数组
- 栈上申请数组和堆上申请二维数组的简介(部分引用自Professional C++)
- 在堆上申请一个容器空间
- 堆上数组&栈上数组
- 数组申请背后的栈和堆操作
- 申请并返回堆空间上的二维空间
- 堆上多维数组的内存管理
- 只在栈上和只在堆上申请对象
- 在堆上申请空间存放对象的内存管理及析构函数调用时机
- 栈内存申请与堆内存申请
- 堆申请(new)与堆释放(delete)
- 申请和释放堆内存
- 全局变量堆内存申请顺序
- 为二维数组在堆上分配空间 zz msdn
- 2015-1-10 公司记录整理
- 负数小数不按四舍五入保留二位小数
- 马化腾力挺红米2,却忘记小米是头饿狼,迟早会噬扑微信
- java处理大文件方案
- 黑马入学试题
- 堆上申请数组
- Java web----多表查询
- 循环-02. 计算圆周率(15)
- 1058. A+B in Hogwarts (20)
- 一个19岁美国少年眼中的各种社交应用
- 网络部分之link layer
- Linus Torvalds :忘掉那该死的并行吧!
- 往昔之章
- DIOCP (一) DIOCP常见问题。