Определение
typedef struct node *ptr;
сделает ptr
псевдонимом для struct node *
.
После этого вы можете сделать либо
struct node *some_pointer;
Или
ptr some_pointer;
Оба будут определять переменную some_pointer
как указатель на структуру node
.
Но делает псевдонимы типа для указателятипы не то, что я рекомендую.Это может затруднить чтение, понимание и сопровождение кода.
Возьмем, к примеру, наиболее распространенную проблему, которую я видел здесь при переполнении стека, когда речь идет о псевдонимах типов указателей:
ptr some_pointer = malloc(sizeof(ptr));
Это выделяет память, достаточную для указателя на структуру, а не для всей структуры.Если вы используете, например,
Node *some_pointer = malloc(sizeof(Node*));
, эта ошибка будет намного яснее и проще для поиска.
См. Является ли хорошей идеей указывать указатели по умолчанию?