网站首页 > java教程 正文
C语言中实现数组是有数据相同的一系列元素组成。数组可以实现添加、删除元素等操作。那具体的这类功能该如何实现?
在使用数组之前需要对数组进行初始化的操作。在使用数组时会涉及到几个变量:数组的首地址、数组的长度、数组的有效个数。通过数组元素的首地址和数组的长度,我们能够获得整个数组;通过数组的有效个数,能够判断数组是否为空。我们可以利用结构体来进行处理,操作如下:
struct Arr{
int *pBase; /*存储数组第一个元素的地址*/
int len; /*数组能容纳的最大元素个数*/
int cnt; /*当前数组有效元素个数*/
};
在定义好结构体之后,例如声明一个结构体变量:struct Arr array,此时结构体变量中各个成员所存储的是内存中的垃圾值。因此需要对数组进行初始化。
对于数组的首地址,需要使用malloc()函数进行内存分配。数组的有效个数初始化为0。
使用malloc()函数初始化数组:
pArr->pBase = (int *)malloc(sizeof(int)*length)
初始化数组长度:
pArr->len = length;
初始化数组有效个数:
pArr->cnt = 0;
在初始化的过程当中,我们需要对内存是否成功分配进行判断,如果不成功,则输出内存分配失败。如果分配成功,再对数组长度及有效个数进行初始化。
void init_arr(struct Arr *pArr, int length){
pArr->pBase = (int *)malloc(sizeof(int)*length);/*分配内存
将首地址赋值给pBase*/
if(NULL == pArr->pBase){ /*判断地址是否分配成功*/
printf("动态内存分配失败\n");
exit(-1); /*终止整个程序*/
}
else{ /*动态内存分配成功*/
pArr->len = length; /*将数组长度初始化为length*/
pArr->cnt = 0; /*将数组有效个数初始化为0*/
}
return;
}
数组初始化函数仅对数组进行初始化,所以不需要返回值,定义为void,但注意在函数结束时需要使用return结束函数。
猜你喜欢
- 2024-10-23 运维--shell 中数组的操作(shell中数组如何定义)
- 2024-10-23 C/C++编程笔记:C 语言字符数组的定义与初始化,讲解到位
- 2024-10-23 Java SE之——数组 基础篇(java入门数组基础educoder)
- 2024-10-23 初识Java—(十)数组(1)(初识java)
- 2024-10-23 巧用C语言中数组部分元素初始化(c语言数组全部初始化为0)
- 2024-10-23 北大学霸!手抄万字Java数组笔记,2小时吃透,你确定不拿走?
- 2024-10-23 C语言中的数组:声明、初始化和操作
- 2024-10-23 「C语言」初始化数组,C语言中初始化特定列表和元素
- 2024-10-23 C语言一维数组,如何初始化?有哪些方式?
- 2024-10-23 “全栈2019”Java第二十九章:数组详解(中篇)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)