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 语言编程中实现一种对象来作为动态 ...
随机推荐
- js日历,使用datepicker.js,ui.core.js,jquery-1.7.1.js
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- c++设计模式总结 好久没写博客了 实在是忙
具体代码就不贴出来了 通俗易懂的理解方式 原创 c++设计模式: 简单工厂模式 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品:在工厂中加工产品 ...
- Nginx阅读笔记(四)之root和alias
nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应.root与alias主要区别在于nginx如何解释location后面的uri ...
- windows apache 配置多个服务 站点 Apache Service Monitor
把Apache安装为多个Window NT服务 ~~~ 可以在 services.msc中查看到1. 在DOS下跳到Apache安装目录里的bin目录(~~~或者用path命令 把apache的安装目 ...
- Qt Installer Framework的学习
Qt Installer Framework是Qt默认包的发布框架.它很方便,使用静态编译Qt制作而成.并且使用了压缩率很高的7z对组件进行压缩.之所以有这些好处,我才觉得值得花一点儿精力研究一下这个 ...
- Android dp和sp的用法汇总
1 > dp 是跟像素密度无关的单位,也就是说在相同尺寸.但不同的分辨率的手机上,用dp标识的东西,显示的大小是一样的. sp是用于标识字体的,它不仅跟屏幕尺寸有关,还跟设置的系统字体大小有关. ...
- 转:30分钟掌握STL
三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有 ...
- asp.net插入sql server 中文乱码问题解决方案
创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出 ...
- 基于visual Studio2013解决C语言竞赛题之0302字符数出
题目 解决代码及点评 根据题目要求,只要根据用户输入的字母,判断字母之后,给出相应的输出即可 在以下代码中,f32函数实现了该功能,通过if条件判断语句 #include <stdio.h ...
- Treasure Exploration(二分最大匹配+floyd)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 7455 Accepted: 3 ...