前言:
今天各位老铁们对“c语言结构体数组初始化”大体比较看重,各位老铁们都想要学习一些“c语言结构体数组初始化”的相关知识。那么小编同时在网络上搜集了一些对于“c语言结构体数组初始化””的相关资讯,希望看官们能喜欢,你们快快来了解一下吧!数组是一类数据的集合,利用数组可以实现数据的存储,但如何实现数组?
一、利用结构体定义数据类型
数组是一种数据结构,需要利用结构体定义数据的类型,对于一个数组,需要知道数组的首元素的地址、数组长度、数组中的有效个数。
struct Arr{ int *pBase;//存储数组第一个元素的地址 int len;//存储数组最大元素个数 int cnt;//当前数组有效元素个数};二、数组初始化函数声明
定义结构体struct Arr,进行结构体变量声明
struct Arr arr;
在这个过程中,声明的结构体变量arr中的3个成员pBase、len、cnt存储的是内存中的垃圾值,需要对其进行初始化,定义初始化函数init_arr()。
需要考虑几个问题
(1)返回值。对于初始化,仅需要将结构体中各参数初始化不需要返回值,因此是void。
(2)参数。初始化函数中需要传入的参数。
首先考虑,如果传入的是结构体变量,相当于是将声明的结构体变量赋值给初始化函数,并不能修改主函数中结构体变量的各个成员的值,不能达到初始化的效果,因此需要传入的是结构体指针变量。
然后考虑,数组中的成员并不是不变的,因此初始化中可以传入数组的长度。
所以初始化的函数声明如下:
void init_arr(struct *pArr, int length);三、数组初始化函数定义
函数定义是指函数需要实现的功能。数组初始化函数对数组分配内存、初始化数组长度以及初始化数组有效元素个数。
为数组分配内存,使用malloc()函数
pArr->pBase = (int *)malloc(sizeof(length) * length);
初始化数组的长度
pArr->len = length;
初始化数组有效个数
pArr->cnt = 0;
但在初始化过程中有可能出现内存分配失败的情况,因此采用if语句进行判断,判断malloc()函数返回值是否为空,具体代码如下
void init_arr(struct Arr *pArr, int length){ //为数组动态分配内存 pArr->pBase = (int *)malloc(sizeof(length) * length); //返回空指针,结束函数 if(NULL == pArr->pBase){ printf("动态内存分配失败"); exit(-1); } else{ pArr->len = length; pArr->cnt = 0; } return;}
标签: #c语言结构体数组初始化 #结构体内的数组初始化 #js初始化一个数组怎么做的