簡體   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