0

私はCプログラミングが初めてです。太字の用語のコーディングをどのように行うことができるか教えてもらえますか?

  • array という整数ポインタと size という整数変数を含む arrayData という構造体を作成します。

  • 次のヘッダーを持つ関数を作成します: arrayData* createArray(int size)。この関数内で、新しい arrayData 構造体のスペースを malloc します。次に、入力変数を要素数として使用して配列を作成する必要があります。最後に、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;
}
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 に答える