Подтвердить что ты не робот

Указатели С++. Как назначить значение структуре указателя?

У меня есть следующая структура:

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 имеет тип автомобиля *. Я не уверен, что я делаю неправильно.

4b9b3361

Ответ 1

Вам нужно использовать оператор → для указателей, например:

car * tempCar = new car();
tempCar->vin = 1234;
tempCar->make = "GM";
//...
delete tempCar;

Кроме того, не забудьте выделить память для tempCar, если вы используете такой указатель. Это то, что делают "новое" и "удаление".

Ответ 2

Вы должны сначала разыменовать указатель (чтобы получить структуру).

Либо:

(*tempCar).make = "GM";

Или:

tempCar->make = "GM";

Ответ 3

tempCar->vin = 1234

Объяснение довольно просто: car* - указатель на car. Это означает, что вы должны использовать оператор -> для доступа к данным. Кстати, car* должен быть выделен, если вы хотите его использовать.

Другим решением является использование объявления типа car tempCar;. Структура car теперь находится в стеке, которую вы можете использовать, если вы находитесь в этой области. С помощью такого объявления вы можете использовать tempCar.vin для доступа к данным.

Ответ 4

Ваш tempCar - это указатель, тогда вам нужно выделить для него память и назначить так:

tempCar = new car();
tempCar->vin = 1234;         
tempCar->make = "GM";
tempCar->year = 1999;
tempCar->fee = 20.5;

В противном случае объявите tempCar следующим образом: car tempCar;

Ответ 5

Измените температуру автомобиля * ниже:

 car *tempCar = (car *)malloc(sizeof(car));

 tempCar->vin = 1234;         
 tempCar->make = "GM";
 tempCar->year = 1999;
 tempCar->fee = 20.5;

Ответ 6

Люди, будьте осторожны при использовании новых, это не Java, это С++, не используйте круглые скобки, когда у вас нет параметров: tempCar = new car;