0

我是 C 编程新手。任何人都可以告诉我如何以粗体对术语进行编码吗?

  • 创建一个名为 arrayData 的结构,其中包含一个名为 array 的整数指针和一个名为 size 的整数变量。

  • 创建一个具有以下标头的函数:arrayData* createArray(int size)。在此函数中,您将为新的 arrayData 结构分配空间。然后,您需要使用输入变量作为元素数创建一个数组。最后,您需要将 malloc'ed 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;
}
4

2 回答 2

1

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;
}
于 2013-10-19T20:54:05.363 回答
0

分配大小和数组的一些更改

struct arrayData* createArray(int size)
{
  struct arrayData *str = (struct arrayData*)malloc(sizeof(struct arrayData));
  int a = 10;
  //int arr[size];       // array should be of size provided
  int *arr = (int*)malloc(size * sizeof(int));
  str->size = size;    // you should assign size to structure variable
  for ( a = 0; a < 10; a++ )
  {
      arr[i] = a; 
  }
  str->array = arr;  // you should point the array in structure to the 
                     // integer arr which you created
  return str;
}
于 2013-10-19T20:52:19.210 回答