あらかじめ割り当てられたメモリポインタを入力として受け入れ、その位置の構造体の配列をデータで埋め込む関数を作成しようとしています。この例では、出力は次のようになります。関数内に動的に割り当てられた構造体を書き込む
W 100
L 200
ただし、最初の行は正しいものの2行目は文字とゼロを出力しません。私は間違って何をしていますか?
typedef struct{
char word;
long number;
}record;
void makerec(record** data){
data[0]->word='W';
data[0]->number=100;
data[1]->word='L';
data[1]->number=200;
}
int main(){
record* data=(record*)malloc(sizeof(record)*1000);
makerec(&data);
printf("%c %ld\n",data[0].word,data[0].number);
printf("%c %ld\n",data[1].word,data[1].number);
free(data);
return 0;
}
'data [1]'は範囲外にアクセスします。あなたは '(* data)[1] .word = 'L';などを意味します。 –