我有以下结构:
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 *类型。我不确定我做错了什么
答案 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;