-3

どうすればこれを機能させることができますか? 構造体配列要素はランダムにすることができ、配列内の要素は変化させることができます。ポインターを作成して各レコードを個別に割り当てようとしましたが、うまくいきませんでした。

#include<stdio.h>

typedef struct _str
{
    int arraySize;
    int a[10];
} str;


int main()
{
    str s[50];

    s[10] = {4, {1, 4, 5, 6}};
    s[20] = {3, {2, 7, 11}};
    s[30] = {3, {3, 8, 9}};

    return 0;
}
4

2 に答える 2

2

あなたがしているのは、宣言された後に構造体を定義することです。宣言された後に のみ構造体に割り当てることができます

構造体は、1回の文で宣言および初期化できます(つまり、宣言中に)

typedef struct _str
{
    int arraySize;
    int a[10];
} str;

int main()
{
  str s[10] = {{1,{2,3,4}},{2,{3,5,6}}....};// this is correct but impractical.

//しかし、これは間違っています

    s[1] = {1,{2,3,4}};//

//これを行う必要があります

    s[1].arraysize = 10; //explicitly assign each member

    for(int i=0;i<s[1].arraysize;i++)
    s[1].a[i] = value;

}

于 2013-04-23T07:32:09.473 に答える
0

実行時に要素の数を決定したい場合は、配列の代わりにリスト (Linkedlist、または循環リスト) を型として使用します。http://www.cprogramming.com/tutorial/c/lesson15.htmlを参照して ください。

または以下のようなコードを使用します

typedef struct _str
{
    int arraySize;
    int *a;
} str;


int main()
{
str s[50];

    s[0].arraySize =3;
    s[0].a=(int *)malloc(sizeof(int)*s[0].arraySize ) ;
    s[0].a[0]=2;
    s[0].a[1]=5;
    s[0].a[2]=7;


    return 0;
}
于 2013-04-23T07:28:17.860 に答える