繁体   English   中英

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

[英]C++ Pointers. How to assign value to a pointer 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 *类型。 我不确定我做错了什么

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

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

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

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

或者:

(*tempCar).make = "GM";

要么:

tempCar->make = "GM";

tempCar->vin = 1234

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

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

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

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

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

将你的车*温度改为以下线:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM