【发布时间】:2016-07-06 14:09:43
【问题描述】:
我在玩 C。只是问几个问题,哪个是最佳做法,以及我是否做错了什么。
我做了一个似乎可以工作的程序:
void main()
{
char *text;
text = malloc(10 * sizeof(char));
dosomethingwithtext(text);
printf("%s\n", text);
}
但是我也看到过这样的版本:(我知道它不会打印任何有意义的东西,因为我没有添加任何字符,但想象一下我有!)
void main()
{
char *text;
text = dosomething();
printf("%s\n", text);
}
char * dosomething()
{
char *text;
text = malloc(10 * sizeof(char));
return text;
}
或者,如果其中任何一个都不是最佳的,那么最好的方法是什么。基本上我在问最常见/最好的方法。
【问题讨论】:
-
基于某种观点,但我相信您会得到支持两种方式的答案。 IMO,两种方式都有其优势,具体取决于调用的位置。但在这两种情况下,您都必须记住
free()语句。 -
void main()是main的无效签名和任何函数声明符的弃用语法。 -
@Olaf
deprecated syntax for any function declarator,你能扩展一下吗? -
@xvan:参见标准中的 6.11.6。