还是拿楼上的那个例子
创新互联专注于嘉荫企业网站建设,响应式网站开发,电子商务商城网站建设。嘉荫网站建设公司,为嘉荫等地区提供建站服务。全流程按需开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
int
add(int
a,int
b)
{
int
c;
c=a+b;
return
c;
}
函数调用就是在别的函数中调用add这个函数,在函数中填入相对应的量,如在main函数中以add(3,4);调用
返回值:如果函数(如add)前有函数类型(int),这就是返回值类型,其实就是c,简单点说,如果函数里有return后便那个值就是返回值,如果没有return语句,他就返回空,也就可以说没有返回值
所有C函数,只要其有返回值,都是由寄存器Ax(对于32位而言为EAX,如果AX不足以容纳,则由DX保存超过AX容量的部分)保存的(也可能是值,也可能是某一地址,视返回类型而定)。
上面这个C函数程序,计算(xy?x:y);后,该值就存在AX(EAX)中,当你在其他函数中调用该函数
后,比如
a=max(m,n);后,其实就是进入max()完成后,函数返时将计算结果存放在AX中,执行这个语句后,即就将AX的值传给了a.
其实,这也很容易验证:
在调用
a=max(m,n);
紧接着输入以下语句(注意:这中间绝对不能有其他任何函数调用和语句):
b=_AX;
printf("a=%d,b=%d",a,b);
你就可能发现,a=和b=一定是同一个值。
写个示例程序供你参考吧:
#include stdio.h
typedef struct Node{
char name[12];
int age;
}NODE;
NODE input()
{
NODE n={0};
scanf("%s%d",n.name,n.age);
return n;
}
int main()
{
NODE node = input();
printf("name:%s\n age:%d\n",node.name,node.age);
return 0;
}
你可以这么理解,比如我们定义了一个函数fun(),如果这个函数有返回值,那么在调用程序里面(比如主函数)就可以把这个函数当成一个数使用;如果没有返回值,那么通常他就是一个独立的语句存在。
比如fun函数里面有个return 0;表示返回值是零,那么在调用函数里面就可以存在诸如
a=fun();b=a+fun();if(fun()=0{};……这类的语句,表示a=0;b=a+0;if(00){};等等,当然也可能是返回一个变量的值,你个指针的值是一样的。
如果没有return 语句,那么函数没有返回值,调用函数里面就不能把他当做一个数值来使用,会出现:
fun();单独成句的语句,在fun()里面可能进行了一些操作,但不需要结果。
C语言自带的函数通常都有返回值,计算函数返回计算结果,操作函数返回操作结果(成功返回1,失败返回0)