2016-12-04 3 views
0

構造体は次のように定義されたとしましょう:私は、ユーザによって指定された構造体のインスタンスの特定の番号を生成したい自動的に構造体のインスタンスを生成

struct car { 
    int registration_number; 
} 

Enter number of cars: 20 
#generate 20 struct instances 

構造体内に配列を作成したくないのですが、すべての車に個別のインスタンスが必要です。私はプロトコルが自動的にインスタンスを生成することを理解していません。

car1,car2,car3......,car n 

は、私はループを実行するだろうと思ったが、私は、新しいインスタンス名を毎回宣言する方法を理解カント:あなたが、必要になりますどのように多くの車の場合、事前にわからない場合は

#some loop 
struct car instance_name #how to replace instance_name with actual names? 
+9

を持つユーザ構造体の配列を作成します。実行時に変数名を作成することはできません。 – melpomene

+0

@melpomene多くをクリアします。ありがとうございました。 –

答えて

-2

を便利な解決策は、その場でもっと多くのメモリを予約するためにmallocを使用することです。

carArray = (struct car**) malloc(numberOfCars*sizeOf(struct car)); 

for (int i =0; i < numberOfCars; i++) 
    carArray[i] = (struct car*) malloc (sizeof(struct car)); 

役立つ物品例here

同様の質問here

+2

'malloc()'をキャストしないでください。この場合、あなたのキャストまたは 'sizeof'式のどちらかが間違っています。 (とにかく2レベルの構造体を使う理由は?) – melpomene

+4

より良い: 'struct car * cars; ... cars = malloc(num * sizeof * cars); ... cars [i] .registration_number = 42; ' – melpomene

関連する問題