Эта строка кода создает псевдоним . Это означает, что Data
является псевдонимом для типа struct data *
. Итак, всякий раз, когда вы видите Data
, это похоже на то, что вы указали указатель на struct data
.
Когда вы делаете что-то вроде Data d;
, вы в основном возможности объявления указателя на struct data
. Вы не инициализируете указатель, поэтому он не указывает на действительный struct data
. Таким образом, разыменование указателя будет недействительным.
Если у вас есть переменная типа Data
, вам нужно указать ее где-то действительную, прежде чем пытаться разыменовать ее.
Возможно, менее запутанный подход был бы сделать это как это вместо:
typedef struct data *Data_ptr;
Каких бы по крайней мере передать идею, что Data_ptr
является типом указателя псевдонимом.
Настоящая проблема немного сложно сказать из вашего описания; не могли бы вы показать код, вызывающий эту функцию? – Codor
Можете ли вы показать определение для 'struct data'? Трудно дать вам пример использования «данных», не зная, что такое «данные структуры». –
Что делать, если вы хотите объект Data, который не является указателем? –