c语言的问题 返回值类型,求大神帮忙解答一下

第一个函数返回值类型为什么是int,写成void就是错的,而第二个返回值类型却必须写成void,而写成int却是错误的。我感觉这两个函数这两种返回值类型都可以,到底我的理解错在了哪里
int Function() /*为什么这个返回值类型为什么是int,写成void就是错的*/
{
printf("this step is in the function\n");
}

void ShowNumber(int iNumber)
/*为什么这个返回值类型却必须写成void,而写成int却是错误的*/
{
printf("You wanna to show the Number is:%d\n",iNumber);/*输出整数*/
}
第一个程序是(去除了头文件)
void ShowNumber(int iNumber);
int main()

{
int iShowNumber;
printf("What Number do you wanna show?\n");
scanf("%d",&iShowNumber);
ShowNumber(iShowNumber);
return 0;
}
void ShowNumber(int iNumber)
{
printf("You wanna to show the Number is:%d\n",iNumber);
}
第二个程序是:
int Function();
int main()

{
printf("this step is before the Function\n");
Function();
printf("this step is end of the Function\n");
return 0;
}
int Function()

{
printf("this step is in the function\n");
}

从这两个函数实现上来看
都可以写成void或者int
没有什么区别。
其中,Function在调用的时候,如果有这样的写法
a=Function(xxx) 那么就必须定义成int
改成void就会报错。
而ShowNumber这个改成int,是不应该报错的,任何情况下都不该报错。追问

但确实报错了啊

我知道自己哪错了,但我还想问一下函数返回值类型void和int有什么区别,什么时候该用哪一种

大神一定帮我解答一下,我是初学者,自学,真的搞不清楚,想了一下午都没明白

追答

首先,你编译出错应该是声明和定义不匹配,同步改就没问题了
其次,返回值作用是返回一个值给主调函数,这里就是返回给main
如果你函数功能不需要给主调一个值,那就是void,否则你要返回什么类型,就定义什么类型

追问

也就是说,不需要返回值时,int也可以吧?

追答

也可以,不过没必要

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答