在辅助函数中设置两个指针相等
Setting two pointers equal in a helper function
我创建了一个名为 "Disk" 的结构。我还为磁盘创建了一个构造函数,其中 returns 指向磁盘结构的指针。
struct disk {...}
struct disk* construct_disk(char*, char*, char*, char*, int, char*, int*);
我有另一个函数,我在其中声明 disk_ptr 将指向磁盘地址(但不分配任何内存)。我想将 disk_ptr 传递给辅助函数,该函数将调用磁盘构造函数并将 disk_ptr 设置为指向与磁盘构造函数 returns.
指针相同的地址
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");
...
}
这两个打印语句为我提供了以下指针值:
磁盘指针为:0x6000509f0
磁盘指针为:0xb
虽然我可以从 "create_or_update_disk_from_file" 中访问磁盘的结构变量 - 我无法从调用它的函数中访问磁盘结构变量,process_current_directory。
让 disk_ptr 指向与 construct_disk 的输出相同的地址的正确方法是什么?
将disk_ptr作为struct disk **传递,以便您可以对其进行修改。
void create_or_update_disk_from_file(char* filename, struct disk** disk_ptr, int action){
...
*disk_ptr = construct_disk(name, serial, vendor, model, rpm, raid_type, input);
printf("The disk pointer is: %p\n", *disk_ptr");
...
}
然后这样称呼它-
create_or_update_disk_from_file(current_directory, &disk_ptr, CREATE);
我创建了一个名为 "Disk" 的结构。我还为磁盘创建了一个构造函数,其中 returns 指向磁盘结构的指针。
struct disk {...}
struct disk* construct_disk(char*, char*, char*, char*, int, char*, int*);
我有另一个函数,我在其中声明 disk_ptr 将指向磁盘地址(但不分配任何内存)。我想将 disk_ptr 传递给辅助函数,该函数将调用磁盘构造函数并将 disk_ptr 设置为指向与磁盘构造函数 returns.
指针相同的地址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");
...
}
这两个打印语句为我提供了以下指针值:
磁盘指针为:0x6000509f0 磁盘指针为:0xb
虽然我可以从 "create_or_update_disk_from_file" 中访问磁盘的结构变量 - 我无法从调用它的函数中访问磁盘结构变量,process_current_directory。
让 disk_ptr 指向与 construct_disk 的输出相同的地址的正确方法是什么?
将disk_ptr作为struct disk **传递,以便您可以对其进行修改。
void create_or_update_disk_from_file(char* filename, struct disk** disk_ptr, int action){
...
*disk_ptr = construct_disk(name, serial, vendor, model, rpm, raid_type, input);
printf("The disk pointer is: %p\n", *disk_ptr");
...
}
然后这样称呼它-
create_or_update_disk_from_file(current_directory, &disk_ptr, CREATE);