У меня есть следующая структура:
typedef struct{
int vin;
char* make;
char* model;
int year;
double fee;
}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-> vin = 1234
Объяснение довольно простое: 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;
Люди, будьте осторожны при использовании new, это не Java, это C++, не используйте круглые скобки, когда у вас нет параметров: tempCar = new car;
Вы должны сначала разыменовать указатель (чтобы получить структуру).
Либо:
(*tempCar).make = "GM";
Или:
tempCar->make = "GM";