四时宝库

程序员的知识宝库

C语言数组算法实现_初始化(c语言数组初始化方式)

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结束函数。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接