我的问题需要将固定数组大小转换为动态内存分配 . 我尝试过各种calloc,malloc和relloc语句但似乎没什么用 . 我想即使是一个void *数据指针也没用 .
请将此代码转换为动态内存,以便稍后调整数组大小 . 另外要添加我正在使用链表,所以这个数组是一个Node指针 .
Node *lists[100] //this does my job
lists[listNo] = NULL;
如果我想使用malloc:
Node *lists = (Node) malloc(100*sizeof(Node));
lists[listNo] = NULL; // gives me error when I use malloc or calloc and the error is assigning Node from void*
2 回答
基于你的断言:
...完成工作,那就是一个包含100个指针的数组(输入
Node
) . 通常的可变长度版本是:如果数组非常大,请使用
<stdlib.h>
而不是int的size_t
,但int更容易用于小数组和索引变量 . 用以下内容分配:在代码中使用
lists_size
代替100,其他所有内容都相同 . 使用calloc()而不是malloc()会将分配的内存清除为二进制零,从而无需循环在每个实际实现上存储NULL指针 . (从技术上讲,C标准不是我最后一次看到的,但是几兆吨的Unix加Windows代码需要这个 . )问题是列表应该在使用malloc时定义为指向数组的指针 .