Извините, если это было задано раньше, я даже не был уверен, что искать, чтобы придумать это.
Когда я создаю typedef struct
, я обычно делаю что-то вроде этого:
typedef struct myStruct {
int a;
int b;
struct myStruct *next;
} MyStruct;
Итак, я объявляю его с MyStruct
в конце. Затем, когда я создаю функции, которые передают это как параметр, я пишу
int doSomething(MyStruct *ptr){
}
Тем не менее, я сотрудничаю с другом в проекте, и я столкнулся с его стилем кодирования, который также должен объявить *MyStructP
следующим образом:
typedef struct myStruct {
int a;
int b;
struct myStruct *next;
} MyStructR, *MyStructP;
И затем он использует MyStructP
в своих функциях, поэтому его параметры выглядят так:
int doSomething(MyStructP)
Поэтому ему не нужно использовать *
в списке параметров. Это меня смутило, потому что, когда я смотрю список параметров, я всегда ищу *
, чтобы определить, является ли arg указателем или нет. Кроме того, я создаю функцию, которая принимает структуру, которую я создал, и структуру, которую он создал, поэтому у моего аргумента есть *, а его нет. Ультра запутанный!!
Может кто-нибудь дать прозрение/сравнение/совет по различиям между ними? Плюсы? Минусы? Какой путь лучше или хуже, или более широко используется? Любая информация вообще. Спасибо!