C++指针.如何为指针结构赋值?

use*_*514 17 c c++ struct pointers

我有以下结构:

typedef struct{
    int vin;
    char* make;
    char* model;
    int year;
    double fee;
}car;
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个类型为car的指针

car *tempCar;
Run Code Online (Sandbox Code Playgroud)

如何为tempCar分配值?我遇到了麻烦

        tempCar.vin = 1234;         
        tempCar.make = "GM";
        tempCar.year = 1999;
        tempCar.fee = 20.5;
Run Code Online (Sandbox Code Playgroud)

编译器一直说tempCar是car*类型.我不确定我做错了什么

Ari*_*yck 28

你需要在指针上使用 - >运算符,如下所示:

car * tempCar = new car();
tempCar->vin = 1234;
tempCar->make = "GM";
//...
delete tempCar;
Run Code Online (Sandbox Code Playgroud)

另外,如果您正在使用这样的指针,请不要忘记为tempCar分配内存.这就是'新'和'删除'的作用.

  • 你不一定要在这里分配内存.指针可以指向堆栈上的本地结构.`汽车法拉利; tempCar =&ferrari;` (3认同)

Set*_*eth 13

您必须首先取消引用指针(以获取结构).

或者:

(*tempCar).make = "GM";
Run Code Online (Sandbox Code Playgroud)

要么:

tempCar->make = "GM";
Run Code Online (Sandbox Code Playgroud)


Nic*_*ume 5

tempCar->vin = 1234

解释很简单:car*是一个指针car.这意味着您必须使用运算符->来访问数据.顺便说一句,car*如果你想使用它必须分配.

另一种解决方案是使用诸如的声明car tempCar;.car只要您在此范围内,结构现在就可以使用它了.通过这种声明,您可以使用它tempCar.vin来访问数据.