私は次の構造体を持っています:
typedef struct{
int vin;
char* make;
char* model;
int year;
double fee;
}car;
次に、carタイプのポインターを作成します
car *tempCar;
TempCarに値を割り当てるにはどうすればよいですか?私は困っています
tempCar.vin = 1234;
tempCar.make = "GM";
tempCar.year = 1999;
tempCar.fee = 20.5;
コンパイラーは、tempCarはタイプcar *であると言い続けます。何が悪いのか分かりません
次のように、ポインタで->演算子を使用する必要があります。
car * tempCar = new car();
tempCar->vin = 1234;
tempCar->make = "GM";
//...
delete tempCar;
また、このようなポインタを使用している場合は、tempCarにメモリを割り当てることを忘れないでください。これが「新規」と「削除」の機能です。
最初にポインタを逆参照する必要があります(構造体を取得するため)。
どちらか:
(*tempCar).make = "GM";
または:
tempCar->make = "GM";
tempCar->vin = 1234
説明は非常に単純です。car*
はcar
へのポインタです。つまり、データにアクセスするには、演算子->
を使用する必要があります。ちなみに、使用する場合はcar*
を割り当てる必要があります。
他の解決策は、car tempCar;
などの宣言を使用することです。 car
構造体がスタック上にあるため、このスコープ内にいる限り、それを使用できます。この種の宣言では、tempCar.vin
を使用してデータにアクセスできます。
TempCarはポインタであり、そのためにメモリを割り当てて、次のように割り当てる必要があります。
tempCar = new car();
tempCar->vin = 1234;
tempCar->make = "GM";
tempCar->year = 1999;
tempCar->fee = 20.5;
それ以外の場合は、tempCarを次のように宣言します:car tempCar;