3
我創建了一個名爲「Disk」的結構。我還爲磁盤創建了一個構造函數,它返回一個指向磁盤結構的指針。在輔助函數中設置兩個相等的指針
struct disk {...}
struct disk* construct_disk(char*, char*, char*, char*, int, char*, int*);
我有在其內我聲明,disk_ptr將指向盤的地址(但不分配任何內存)另一功能。我想將disk_ptr傳遞給一個輔助函數,它將調用磁盤構造函數,並將disk_ptr設置爲指向與磁盤構造函數返回的指針相同的地址。
int process_current_directory(health_monitor* hm, char* directory){
...
struct disk* disk_ptr;
//PROBLEM IS HERE - disk_ptr is not assigned value correctly below
create_or_update_disk_from_file(current_directory, disk_ptr, CREATE);
printf("The disk pointer is: %p\n", disk_ptr");
...
}
所以,create_or_update_disk_from_file藉此指針目前指向無處,並做到這一點:
void create_or_update_disk_from_file(char* filename, struct disk* disk_ptr, int action){
...
// This is where I want to disk_ptr to be assigned
disk_ptr = construct_disk(name, serial, vendor, model, rpm, raid_type, input);
printf("The disk pointer is: %p\n", disk_ptr");
...
}
兩個print語句給我下面的值指針:
盤指針是: 0x6000509f0 磁盤指針是:0xb
雖然我可以從withi訪問磁盤的結構變量n「create_or_update_disk_from_file」 - 我無法從調用它的函數process_current_directory訪問磁盤結構變量。
將disk_ptr指向與construct_disk的輸出相同的地址的正確方法是什麼?