Я создал структуру под названием «Диск». Я также создал конструктор для диска, который возвращает указатель на структуру диска.Установка двух указателей, равных в вспомогательной функции
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");
...
}
Два заявления печати дают мне следующие значения для указателей:
Указатель диска: 0x6000509f0 Указатель на диск: 0xb
И хотя я могу получить доступ к структурным переменным диска из withi n "create_or_update_disk_from_file" - я не могу получить доступ к переменным структуры диска из вызывающей его функции process_current_directory.
Что было бы правильным способом, чтобы disk_ptr указывал на тот же адрес, что и вывод конструктора?