Когда вы объявляете любую переменную, указатель или нет, без ее инициализации, она получает все, что находится в памяти, в качестве текущего значения.Некоторые языки более высокого уровня могут неявно инициализировать все новые значения переменными «по умолчанию».Возможно, вы привыкли к этому из предыдущего опыта программирования;это не так в C.
Если вы используете оператор разыменования *
для неинициализированного указателя, вы разыменовываете любой адрес, представленный текущим значением указателя, что является неопределенным поведением, и почтиконечно, вызовет нарушение прав доступа.
Вам нужно инициализировать указатель, чтобы указать на что-то;либо существующая struct client_config
, либо новая память кучи, выделенная с помощью malloc
или calloc
.
Кроме того, если ваша функция действительно должна принимать указатель на struct client_config
, параметр должен иметь*
оператор также.