试着直接malloc一个2*3*4的空间来模拟数组:

#include <stdio.h>
#include <malloc.h> int main(void)
{ int*** pArr = NULL; pArr = (int ***)malloc(2*3*4*sizeof(int));
if(pArr == 0)
{
return -1;
} memset(pArr, 0, 2*3*4*sizeof(int)); pArr[0][0][1] = 11;
printf("pArr[0][0][1] = %d\n" , pArr[0][0][1]); free(pArr);
pArr = NULL; return 0;
}
/*
root@oucaijun:/work/dcc# gcc 1.c ;./a.out
1.c: In function ‘main’:
1.c:17: warning: incompatible implicit declaration of built-in function ‘memset’
Segmentation fault */

  

创建与释放一个三维数组:

#include <stdio.h>
#include <malloc.h> int*** Malloc3DActiveArray(int*** pArr, int x, int y, int z);
void Free3DActiveArray(int*** pArr, int x, int y);
//void Display3DArray(int*** pArr, int x, int y, int z); int main(void)
{
int x, y, z;
int*** array = NULL; printf("输入一维长度: ");
scanf("%d",&x);
printf("输入二维长度: ");
scanf("%d",&y);
printf("输入三维长度: ");
scanf("%d",&z); array = Malloc3DActiveArray(array, x, y, z);
printf("1\n");
printf("array[0][0][1] = %d\n", array[0][0][1]);
Free3DActiveArray(array, x, y);
array = NULL; return 0;
} int*** Malloc3DActiveArray(int *** pArr, int x, int y, int z)
{
int i, j, k;
pArr = (int ***)malloc(x * sizeof(int **)); //第一维 for (i = 0; i < x; i++)
{
pArr[i] = (int **)malloc(y * sizeof(int *));//第二维
for (j = 0; j < y; j++)
{
pArr[i][j] = (int *)malloc(z * sizeof(int));//第三维
for (k = 0; k < z; k++)
{
pArr[i][j][k] = i + j + k + 1;
printf("%d ", pArr[i][j][k]);
}
printf("\n");
}
printf("\n");
} return pArr;
} void Free3DActiveArray(int*** pArr, int x, int y)
{
int i, j;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
free(pArr[i][j]);//第三维
pArr[i][j] = 0;
} free(pArr[i]);//第二维
pArr[i] = 0;
}
free(pArr);//第一维
}
/*
root@oucaijun:/work/dcc# gcc 1.c ;./a.out
输入一维长度: 1
输入二维长度: 2
输入三维长度: 3
1 2 3
2 3 4 1
array[0][0][1] = 2 */

  

c语言中内存的动态分配与释放(多维动态数组构建)

c语言,动态数组的更多相关文章

  1. c语言 动态数组

    C语言中,在声明数组时,必须明确告诉编译器数组的大小,之后编译器就会在内存中为该数组开辟固定大小的内存.有些时候,用户并不确定需要多大的内存,使用多大的数组,为了保险起见,有的用户采用定义一个大数组的 ...

  2. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  3. C语言 动态数组实现

    一.概述 C语言是不能直接定义动态数组的,数组必须在初始化时确定长度. 如果要在程序运行时才确定数组的长度,就需要在运行的时候,自己去向系统申请一块内存用动态内存分配实现动态数组. 二.动态内存分配函 ...

  4. [UE4]C 语言动态数组

    在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定.对于这种问题,用静态数组的办法很难解决.为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数结合指 ...

  5. C语言 · 动态数组的使用

    从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出.要求尽可能使用函数实现程序代码.平均值为小数的只保留其整数部分. 样例输入: 5 3 4 0 0 2样例输出:9 1样 ...

  6. (2)redis的基本数据结构是动态数组

    redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; ]; }; 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针, ...

  7. (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

    目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...

  8. C语言基础 - 实现动态数组并增加内存管理

    用C语言实现一个动态数组,并对外暴露出对数组的增.删.改.查函数 (可以存储任意类型的元素并实现内存管理) 这里我的编译器就是xcode 分析: 模拟存放 一个 People类 有2个属性 字符串类型 ...

  9. [C] 在 C 语言编程中实现动态数组对象

    对于习惯使用高级语言编程的人来说,使用 C 语言编程最头痛的问题之一就是在使用数组需要事先确定数组长度. C 语言本身不提供动态数组这种数据结构,本文将演示如何在 C 语言编程中实现一种对象来作为动态 ...

随机推荐

  1. 顺为资本CEO许达来:为什么说中国创业者很幸福?(附PPT)

    顺为资本创始合伙人许达来 编者按:许达来,顺为资本创始合伙人及CEO,代表性投资项目包括小米科技.丁香园.一起作业.加一联创.金山软件及兴达国际等. 本文为许达来在新浪创业举办的新创课活动上的内容分享 ...

  2. 转:30分钟掌握STL

    三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有 ...

  3. vs2010根据字符串内容添加断点

    在vs中我们可以直接用表达式.数值型比较直接用操作符即可. 如i==2,i<2; 但是字符型比较呢? 加入我们有一个名为string的变量,定义如下: char *string="Tw ...

  4. 让我们共同构筑物联网起飞的平台:物联网操作系统Hello China寻求应用合作伙伴

    经过几天的努力,终于把Hello China V1.76版的内核移植到基于Cortex-M3内核的STM32 chipset上.因为还希望进一步写一个USART驱动程序,因此详细的移植文档,预计一周之 ...

  5. 基于visual Studio2013解决C语言竞赛题之0406数列求和

      题目 解决代码及点评 这个题目,还是考察for循环的使用 以及数列规律,该数列的特点是第n个分子 = 第n-1个分子 + 第n-2个分子,分母也是此规律 而另外一个规律是第n个分子和第n- ...

  6. leetcode_question_64 Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  7. Yii Framework2.0开发教程(2)使用表单Form

    第一步.接着教程(1).我们在controllers/ZhyoulunController.php中加入两处, 1) use app\models\EntryForm; 和 2) public fun ...

  8. load、save方法、spark sql的几种数据源

    load.save方法的用法          DataFrame usersDF = sqlContext.read().load("hdfs://spark1:9000/users.pa ...

  9. 杭电 2029 Palindromes _easy version

    Problem Description "回文串"是一个正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.请写一个 ...

  10. javascript 学习随笔2

    <html> <head> <script type="text/javascript"> function writeText(txt) { ...