c语言,动态数组
试着直接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语言 动态数组
C语言中,在声明数组时,必须明确告诉编译器数组的大小,之后编译器就会在内存中为该数组开辟固定大小的内存.有些时候,用户并不确定需要多大的内存,使用多大的数组,为了保险起见,有的用户采用定义一个大数组的 ...
- 线性表之顺序存储结构(C语言动态数组实现)
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...
- C语言 动态数组实现
一.概述 C语言是不能直接定义动态数组的,数组必须在初始化时确定长度. 如果要在程序运行时才确定数组的长度,就需要在运行的时候,自己去向系统申请一块内存用动态内存分配实现动态数组. 二.动态内存分配函 ...
- [UE4]C 语言动态数组
在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定.对于这种问题,用静态数组的办法很难解决.为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数结合指 ...
- C语言 · 动态数组的使用
从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出.要求尽可能使用函数实现程序代码.平均值为小数的只保留其整数部分. 样例输入: 5 3 4 0 0 2样例输出:9 1样 ...
- (2)redis的基本数据结构是动态数组
redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; ]; }; 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针, ...
- (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)
目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...
- C语言基础 - 实现动态数组并增加内存管理
用C语言实现一个动态数组,并对外暴露出对数组的增.删.改.查函数 (可以存储任意类型的元素并实现内存管理) 这里我的编译器就是xcode 分析: 模拟存放 一个 People类 有2个属性 字符串类型 ...
- [C] 在 C 语言编程中实现动态数组对象
对于习惯使用高级语言编程的人来说,使用 C 语言编程最头痛的问题之一就是在使用数组需要事先确定数组长度. C 语言本身不提供动态数组这种数据结构,本文将演示如何在 C 语言编程中实现一种对象来作为动态 ...
随机推荐
- python3基本框架
- ARP地址解析协议
ARP地址解析协议:为IP地址到相应的硬件地址之间提供动态映射. 下面图为例说明地址解析协议的详细工作流程. 结合图中的序号进行说明. client通过FTP协议连接server时,首先解析器会把主机 ...
- Jquery Ajax时 error处理 之 parsererror
Jquery Ajax时 error处理 之 parsererror 01 $.ajax({ 02 type: "POST", 03 con ...
- ceph install
Ceph : performance, reliability and scalability storage solution Contents 1 Introduction 1.1 Testing ...
- 关于方法中的形参out
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- BZOJ 1060: [ZJOI2007]时态同步( 树形dp )
坑爹...数据是错的..详见discuss http://www.lydsy.com/JudgeOnline/wttl/wttl.php?pid=1060 先求根到叶子的距离最大值x, 然后把所有叶 ...
- ZOJ 2853 Evolution 【简单矩阵快速幂】
这道题目第二次看的时候才彻底理解了是什么意思 把题目转化为数学模型分析后就是 有一个初始序列, 有一个进化率矩阵 求的是初始序列 与进化率矩阵进行 m 次运算后, 初始序列最后一位的答案 那么显然,可 ...
- 发送邮件给某人:mailto标签
mailto标签 1.标签最简式 <a href="mailto:xxx@xx.com">联系站长</a> 2.标签帮你填抄送地址 <a href=& ...
- A Magic Lamp(贪心+链表)
A Magic Lamp Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Jetty:配置概览-须要配置什么
上一节讲述了怎么配置Jetty,这节将告诉你使用Jetty你须要配置些什么. 配置Server Server实例是Jetty服务端的中心协调对象,它为全部其它Jetty服务端组件提供服务和生命周期管理 ...