C语言中一个函数前加了void到底要不要返回值呀!

书上(谭浩强版)前面说带有void的函数不要return值,但是在做题中和书上处理动态链表所需的函数中对带了void的malloc\calloc\free函数又返回了值,到底怎么回事?

void 用于函数前表示无返回值
如void No_ruturn(void)
用于形参表示函数不接受任何参数
而你说的是(void *)这里的void不表示无返回值 而表示该指针可以指向任何类型
列如
void *p1;
iny *p2;
p1=p2;//可以
但是p2=p1//不可以
这就像男人女人都是人 你可以说男人是人 但不可以说人是男人 一样的道理
应为C规定对指针的操作必须知道指针类型
这也是(void *)类型的指针在使用时必须进行格式转换的原因
也就是说你不能进行类似
void *p1;
p1++;
这样的操作 应为C不知道p1是个什么样的指针 +1到底应该进多少位
如果还不明白 建议去复习下指针的工作原理
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-05
函数定义格式为
void func(...);
的形式时,代表函数不需要返回值。这时在函数需要提前退出的时候,只需要调用
return;
即可。 不需要任何返回值。

容易混淆的是
void *func(...);
或者类似格式。
void *和void是不同类型,表示需要返回一个指针,这种情况下是需要返回值的。
第2个回答  2010-04-25
无返回值的return语句,用于void类型函数,而void类型函数可以有return语句,也可以没return语句.
第3个回答  2010-04-25
那是应该是void*,,,不是void
void*指的是一个指针,它不指向任何一个类型的数据,,,必须转化后使用,所以你看到在用这些返回值时都有个转化的过程,,,
第4个回答  2015-09-28
void意思是返回空值,无需写return语句,
相似回答