C 创建创建结构实例的数组

C 创建创建结构实例的数组,c,arrays,struct,instance,C,Arrays,Struct,Instance,大家好,我得到了以下结构 struct Test { unsigned char* c_string; unsigned int value; }; 我创建了一个函数来创建这个结构的一个新实例,并用如下的随机值初始化属性 struct Test* createNewTest(){ struct Test *NewInstance = (Test * )malloc( sizeof(Test) ); NewInstance->value = rand(); 现在我必须创建

大家好,我得到了以下结构

struct Test
{
    unsigned char* c_string;
    unsigned int value;
};
我创建了一个函数来创建这个结构的一个新实例,并用如下的随机值初始化属性

struct Test* createNewTest(){
struct Test *NewInstance = (Test * )malloc( sizeof(Test) );
NewInstance->value = rand();
现在我必须创建一个函数来创建我的结构的n个完全初始化的实例

struct Test** createNewArray(unsigned int n){
};

有人能帮我做这件事吗?我现在真的不知道如何从这里开始

我将试图解释这一点,而不逐字回答你的作业

首先,您需要分配
n
倍的内存
malloc
可以分配任何金额,因此您只需计算数字

第二,您需要执行相同的初始化,但要针对数组中的每个条目。你需要一个循环


提示:在C中,指向单个实例的指针和指向动态数组的指针是不可区分的
ptr->value
ptr[0]相同。value
ptr[1]。value
是数组中的下一个元素。

非常简单。首先,您需要为指向结构测试的
n
指针分配足够的存储空间:

struct Test **array = malloc(n * sizeof *array);
if (!array) return array;
然后使用您拥有的函数分配每个指针:

for (size_t i = 0;  i < n;  ++i)
    array[i] = createNewTest();
(大小i=0;i 数组[i]=createNewTest(); 把它都包起来,你会明白的

struct Test **createNewArray(size_t n)
{
    struct Test **array = malloc(n * sizeof *array);
    if (!array) return array;

    for (size_t i = 0;  i < n;  ++i)
        array[i] = createNewTest();

    return array;
}
struct Test**createNewArray(大小)
{
结构测试**数组=malloc(n*sizeof*array);
if(!array)返回数组;
对于(尺寸i=0;i
别忘了写一个匹配的
free()
函数


此外,考虑您是否真的想要一组指针到“代码>测试< /COD> > -您最好用一个数组<代码>测试< /COD>对象代替.< /P>欢迎访问堆栈溢出!code>sizeof(Test)-->

sizeof(struct Test)
不确定通过将指针c_字符串指定给随机数来实现什么,因此不希望使用智能。如果要使用sizeof(Test),请在结构前面加上typedef并将名称附加到结构中。
NewInstance->c_string=rand()你的编译器没有抱怨,你的环境中确实有问题。很抱歉,我复制了错误的版本,不应该有新实例->c_string=rand();