C语言—空类型问题

来源:百度知道 编辑:UC知道 时间:2024/07/14 02:35:14
#include "stdio.h"
#include "math.h"
main()
{
double x,s;
printf("input number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sine of %lf is %lf\n",x,s);
}
空类型在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明,例如在例题中给出的max函数定义中,函数头为: int max(int a,int b);其中“int ”类型说明符即表示该函数的返回值为整型量。又如在例题中,使用了库函数 sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句s=sin (x);中,s 也必须是双精度浮点型,以便与sin函数的返回值一致。所以在说明部分,把s说明为双精度浮点型。但是,也有一类函数,调用后并不需要向调用者返回函数值, 这种函数可以定义为“空类型”。其类型说明符为void。

文章中的以下两句不懂,望高手指点下
空类型在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明

但是,也有一类函数,调用后并不需要向调用者返回函数值,

准确的说,函数这个名称不太准确,容易误导人。C/C++里的函数应该被叫做“子程序”,是一个独立的程序段,可以被重复调用用来完成类似的功能
这样的“子程序”很多情况下是用来提供一个值的,这就是通常的函数,这个值的类型必须明确,就是返回值的类型
但有的子程序不是用来提供一个值,可以仅仅是执行某些特定的操作,那么,定义为空类型是安全的,表示“不允许该子程序返回值”。这种子程序只能通过独立的语句调用,不能用在表达式里
之所以需要空类型,是因为,函数的默认返回值类型是int,如果在函数定义时未带返回类型说明,则默认为int;即使函数中没有return语句,编译器按照函数返回值的原理,会返回一个不确定的值。如果将这样的函数错用在表达式里,语法上没错,但会带来很难察觉的逻辑错误。
而将空类型函数用在表达式里是一个编译错误。

1、在函数定义时的类型即为函数返回值的类型,如:
int max(int a,int b); 这个函数的返回值就是int类型
float function(int n); 这个函数的返回值则为float类型
void change(int *p1,int *p2); 这个函数无返回值(void类型)

2、“也有一类函数,调用后并不需要向调用者返回函数值”
这类函数就是void类型,上面已经举例说明了