Хотя вы не показываете нам, как инициализировать Check
, что ограничивает объем помощи, которую мы можем оказать, есть ненужный параметр parse()
, который вы можете удалить.
int main(int argc, char **argv)
{
Message *newMessage;
Asset *Check;
[...]
newMessage = parser("N,2376...,0,0", newMessage);
[...]
}
Message *parser(char *message, Message *new_Message)
{
[...]
new_Message = (Message *)malloc(sizeof(Message));
[...]
return(new_Message);
}
Когда вы смотрите на этот скелет, может быть легче увидеть, что:
а. Значение в main()
, переданное parser()
как newMessage
, не определено, поскольку локальная переменная не была инициализирована, но
б. Это не имеет большого значения, потому что первое, что происходит в parser()
, это то, что значение выделяется и присваивается копии функции неинициализированного значения (new_Message
), таким образом инициализируя значение, используемое в parser()
.
Итак, код «безопасен», но может быть записан как:
int main(int argc, char **argv)
{
Message *newMessage;
Asset *Check;
[...]
newMessage = parser("N,2376...,0,0");
[...]
}
Message *parser(char *message)
{
[...]
Message *new_Message = (Message *)malloc(sizeof(Message));
[...]
return(new_Message);
}
Лучше не передавать значения в функции, которые не используются.
Кроме того, большинство людей либо используют подчеркивание для разделения слов в именах, либо используют camelCase
имена, но обычно не camel_Case
, который объединяет оба.