例:
#include<stdio.h>
int sum(int begin, int end);
int main(void)
{
int begin,end;
begin = 1;
end = 10;
result = sum(begin,end);
printf("%d到%d的和为%d\n ", begin, end, result);
return 0;
}
int sum(int begin, int end)
{
int i;
int sum = 0;
for (i = begin; i < end; i++)
{
sum += i;
}
return sum;
————————————————
版权声明:本文为CSDN博主「手打猪大屁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Black__goat/article/details/128588315
以此代码为例:
首先:
int sum(int begin, int end);叫做函数声明,函数声明的作用是让编译器预留出一部分空间,同时让编译器先知道函数的样子
int sum(int begin, int end) //这叫做函数定义,定义是能够开辟空间的,空间大小等于函数类型的大小(整数型四个字节)
{
..........
return sum;
}
{......} --函数体,在函数体内定义的变量都属于局部变量,只要出了该函数体,这些局部变量就会消失,变量从定义到消失的时间段就叫作这个变量的生命周期
sum(begin,end); --函数调用,括号里的叫做实际参数,简称实参
int -- 函数返回值类型(不需要返回值时可改为void,如void sum(....))
return sum;--函数返回值,就是将return后面的变量的值,或常数,或表达式的运行结果返回到函数定义时开辟的空间中保存,作为函数运行的结果,该结果的数据类型要与申明和定义时的函数返回值类型一致
sum --函数名
(int begin, int end) --参数表,括号里的叫做形式参数,简称形参,不需要参数的时候可以改为void,如 int main(void)
int main(void) --main称为主函数,一个c程序中只能有一个主函数,可以有多个自定义函数
int --是参数的类型,即在函数调用时,传入的实参必须是整数型的
int sum(int begin, int end) -- 函数头,声明就是由 函数头加分号构成
函数的运行:
编译器先通过函数声明( int sum(int begin, int end);)知道了sum函数的样子
然后运行到函数调用部分:
result = sum(begin,end);
然后程序就会进入到sum函数中:
int sum(int begin, int end)
{
int i;
int sum = 0;
for (i = begin; i <= end; i++)
{
sum += i;
}
return sum;
然后通过一系列的运算,sum = 55;
于是到了 return sum;
这里的return的作用是,将sum的值返回到之前函数定义时所开辟的空间中保存
再下一步,{.....}内所有的局部变量都消失了
然后函数sum带着刚刚保存的结果55回到函数调用的地方,将函数运行的结果55赋值给result
注意:
函数sum和变量sum是不相同的,只是方便理解所以这么定义。
还有main函数中定义的begin和end与sum函数中定义的begin和end也是不相同的,在函数sum中的begin和end就是两个刚定义的新变量,用来存放函数调用时传入的两个实参,当调用结束时这两个变量也随之消失,main函数由于还没运行结束,所以main函数中的局部变量还不会消失
当函数是void类型时,则不能够出现return,若不是则必须要有return,有些编译器会在主函数main的结尾自动加一个return 0(作用是告诉你,主函数程序运行成功,为什么是0是因为0是一个特殊的,是唯一的,计算机中,是否满足条件的结果用0和非0表示);所以即使有时你没写也不会报错,但最好要写。