我是C编程新手。谁能告诉我该如何对粗体字进行编码?


创建一个名为arrayData的结构,该结构包含一个名为array的整数指针和一个名为size的整数变量。
使用以下标头创建一个函数:arrayData * createArray(int size)。在此函数内,您将为新的arrayData结构分配空间。然后,您需要使用输入变量作为元素数创建一个数组。最后,您需要将malloc分配的arrayData指针中的变量设置为等于数组和数组大小。最后返回malloc的arrayData结构的指针。


我已经尝试过类似的东西:

#include<stdio.h>


struct arrayData
{
    int *array;
    int size;
}

struct arrayData* createArray(int size)
{
    struct arrayData *str = (struct arrayData*)malloc(sizeof(struct arrayData));
    int a = 10;
    int arr[a];
    for ( a = 0; a < 10; a++ )
    {
        str->arr[i] = a;
    }
    return str;
}

最佳答案

int arr[a];在函数内部本地分配,并且在函数返回时将被销毁。您应该动态分配str->array进行正确分配。

struct arrayData* createArray(int size)
{
    struct arrayData *str = malloc(sizeof(struct arrayData));
    int a = 10;
    str->array = malloc(size * sizeof(int));
    str->size = size;
    for ( a = 0; a < 10; a++ )
    {
        str->array[i] = a;
    }
    return str;
}

08-16 21:50