C语言:函数前加void是什么意思?

C语言:函数前加void是什么意思?,第1张

C语言:函数前加void是表示函数的返回值为空,void表示空
返回值为空表示此函数可以没有return语句,或者使用return;语句
返回值概念:一个函数的函数名既是该函数的代表,也是一个变量。由于函数名变量通常用来把函数的处理结果数据带回给调用函数,即递归调用,所以一般把函数名变量称为返回值。通俗点来说就是函数执行完毕后得到的结果。
返回值的类型可以有很多 void、bool 、int 、以及自定义的类型等等。

void用于指定main函数不向系统返回任何值。如果不加void,C编译器默认函数返回值类型为int。
也可以用int main(),在main函数结尾处加return 0;语句。这表明main函数向 *** 作系统返回int类型的值,如果系统收到main函数返回的值为0,则表明程序正常结束,否则为非正常退出。

void的含义
void的字面意思是“无类型”,void 则为“无类型指针”,void 可以指向任何类型的数据。
void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量, void真正发挥的作用在于:

(1) 对函数返回的限定;

(2) 对函数参数的限定。
我们知道,在定义函数时,加在函数名前的“void”表示该函数没有返回值。但在调用时,在函数名前加“(void)”的作用又是什么呢?
最明显的一点就是表示程序并不关心调用该函数后的返回值是什么,比如函数strcpy,我们直接用“strcpy(des_str, src_str);”这样的形式来调用。“(void)strcpy(des_str, src_str);”这样的形式还真不多见!
原因是这种写法不针对人,也不针对编译器,而是针对静态代码检测工具,它会把函数返回值作为一项检测标准。在某些大公司,比较重视代码规范,若在代码静态检测时需要检测该项。此时就需要用在被调用的函数(名)前加上“(void)”这种形式来告诉静态代码检测工具程序并非没有处理该函数的返回值,而是该处确实不需要处理它(该函数的返回值),不需要再对该处代码作此项检测。其实这和我们在代码中使用“#pragma warning (disable: XXXX)”的道理是一样的。
l例如: 统计整数里面各位 1 2 3 的个数
//
#
include <stdioh>
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n != 0)
{
switch (n % 10)
{ case 1:
c1++;
break;
case 2:
c2++;
break;
case 3:
c3++;
}
n /= 10;
}
}
int main()
{ long n;
scanf("%ld", &n); //输入整数n
fun(n); //调用自定义函数fun
printf("C1=%d C2=%d C3=%d\n", c1, c2, c3); //输出
}

方便啊,如果一个定义一个函数的时候,本身就不需要有函数返回值,那么为什么还要用return来设置一个默认返回,void几乎只有“注释”和限制程序的作用,
void 针对函数来说, 对函数返回的限定(表明这个函数没有返回值),对函数参数的限定(限定函数无参数,C语言中,也可是任何类型的指针)。

当一个函数只需要别人调用,调用该函数的函数不需要得到返回值时用void,当需要从被调函数中返回一个int型数时就用int。
比如比较大小的函数,
int max(int a,int b){
return a>ba:b;
}
调用该函数的函数需要知道哪个数大,就得返回一个int型的数;
又如交换两个变量的函数,
void swap(int a,int b){
int c=a;
a=b;
b=c;
}
调用该函数的函数知道它的功能就是让这俩变量的值交换,然后不用别的返回值了,所以就用void了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13399395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存