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

时间:2010-02-24 21:14:35

标签: c++ c pointers struct

我有以下结构:

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 *类型。我不确定我做错了什么

5 个答案:

答案 0 :(得分:27)

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

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

另外,如果您使用的是这样的指针,请不要忘记为tempCar分配内存。那就是“新”和“删除”。

答案 1 :(得分:13)

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

要么:

(*tempCar).make = "GM";

或者:

tempCar->make = "GM";

答案 2 :(得分:5)

tempCar->vin = 1234

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

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

答案 3 :(得分:1)

你的tempCar是一个指针,然后你必须为它分配内存并分配如下:

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

否则以这种方式声明tempCar:car tempCar;

答案 4 :(得分:-2)

人们在使用new时要小心,这不是Java,它是C ++,当你没有参数时不要使用括号:tempCar = new car;