malloc数组初始化,malloc怎么初始化

http://www.itjxue.com  2023-01-24 11:14  来源:未知  点击次数: 

C语言 用malloc分配2维数组后初始化出错,谁帮我看看错在哪里

首先是,malloc语句计算字节长度错误,

第一个应改为malloc(4*sizeof(int*))

第二个应改为malloc(4*sizeof(int))

还有,a[4][4]={...}这样的语句只能在定义变量时初始化用,以上赋值需要逐个元素进行。

用malloc申请二维数组,怎样初始化为0?不是输入0那种

for(k=0;ksirecount[i].count;k++) //申请行向量的空间

{

*(sirecount[i].next+k)=(char *)malloc(2059*sizeof(char));

memset(*(sirecount[i].next+k),0,2059*sizeof(char);//增加一句即可

}

数据结构初始化

数组是一类数据的集合,利用数组可以实现数据的存储,但 如何实现数组 ?

数组是一种数据结构,需要利用结构体定义数据的类型,对于一个数组,需要知道 数组的首元素的地址、数组长度、数组中的有效个数 。

定义结构体struct Arr,进行结构体变量声明

struct Arr arr;

在这个过程中,声明的结构体变量arr中的3个成员pBase、len、cnt存储的是内存中的垃圾值,需要对其进行初始化,定义初始化函数init_arr()。

需要考虑几个问题

(1) 返回值 。对于初始化,仅需要将结构体中各参数初始化不需要返回值,因此是 void 。

(2) 参数 。初始化函数中需要传入的参数。

首先考虑,如果传入的是结构体变量,相当于是将声明的结构体变量赋值给初始化函数,并不能修改主函数中结构体变量的各个成员的值,不能达到初始化的效果,因此 需要传入的是结构体指针变量 。

然后考虑,数组中的成员并不是不变的,因此初始化中可以 传入数组的长度 。

所以初始化的函数声明如下:

函数定义是指函数需要实现的功能。数组初始化函数对数组分配内存、初始化数组长度以及初始化数组有效元素个数。

为数组分配内存,使用malloc()函数

初始化数组的长度

初始化数组有效个数

但在初始化过程中有可能出现 内存分配失败 的情况,因此采用 if语句进行判断 ,判断 malloc()函数返回值是否为空 ,具体代码如下

C语言 malloc函数怎么用的..就是动态初始化字符指针数组.

如果是字符指针数组,则就是二级指针了,如果分配n * m数组,则:

int i, n = 10; m = 20;

char **p = (char**)malloc(n * sizeof(char*));

for(i = 0; i n; ++i)

p[i] = (char*)malloc(m * sizeof(char));

(责任编辑:IT教学网)

更多

推荐免费资源文章