C语言函数定义(C语言自定义函数)
将代码段封装成函数的过程叫做函数定义。
C语言无参函数的定义
如果函数不接收用户传递的数据,那么定义时可以不带参数。如下所示:
dataType functionName(){
//body
}
dataType 是返回值类型,它可以是C语言中的任意数据类型,例如 int、float、char 等。
- functionName 是函数名,它是标识符的一种,名规则和标识符相同。函数名后面的括号
( )不能少。 - body 是函数体,它是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由
{ }包围。 - 如果有返回值,在函数体中使用 return 语句返回。return 出来的数据的类型要和 dataType 一样。
例如,定义一个函数,计算从 1 加到 100 的结果:
累加结果保存在变量int sum(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
}
sum中,通过return语句返回。sum 是 int 型,返回值也是 int 类型,它们一一对应。return是C语言中的一个关键字,只能用在函数中,用来返回处理结果。将上面的代码补充完整:
运行结果:#include <stdio.h>
int sum(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
}
int main(){
int a = sum();
printf("The sum is %d\n", a);
return 0;
}
The sum is 5050
函数不能嵌套定义,main 也是一个函数定义,所以要将 sum 放在 main 外面。函数必须先定义后使用,所以 sum 要放在 main 前面。
注意:main 是函数定义,不是函数调用。当可执行文件加载到内存后,系统从 main 函数开始执行,也就是说,系统会调用我们定义的 main 函数。
无返回值函数
有的函数不需要返回值,或者返回值类型不确定(很少见),那么可以用 void 表示,例如:void hello(){
printf ("Hello,world \n");
//没有返回值就不需要 return 语句
}
void是C语言中的一个关键字,表示“空类型”或“无类型”,绝大部分情况下也就意味着没有 return 语句。C语言有参函数的定义
如果函数需要接收用户传递的数据,那么定义时就要带上参数。如下所示:
dataType functionName( dataType1 param1, dataType2 param2 ... ){
//body
}
dataType1 param1, dataType2 param2 ...是参数列表。函数可以只有一个参数,也可以有多个,多个参数之间由,分隔。参数本质上也是变量,定义时要指明类型和名称。与无参函数的定义相比,有参函数的定义仅仅是多了一个参数列表。数据通过参数传递到函数内部进行处理,处理完成以后再通过返回值告知函数外部。
更改上面的例子,计算从 m 加到 n 的结果:
参数列表中给出的参数可以在函数体中使用,使用方式和普通变量一样。int sum(int m, int n){
int i, sum=0;
for(i=m; i<=n; i++){
sum+=i;
}
return sum;
}
调用 sum() 函数时,需要给它传递两份数据,一份传递给 m,一份传递给 n。你可以直接传递整数,例如:
int result = sum(1, 100); //1传递给m,100传递给n
也可以传递变量:
int begin = 4;
int end = 86;
int result = sum(begin, end); //begin传递给m,end传递给n
也可以整数和变量一起传递:
int num = 33;
int result = sum(num, 80); //num传递给m,80传递给n
函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(也就是传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。原则上讲,实参的类型和数目要与形参保持一致。如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型,例如将 int 类型的实参传递给 float 类型的形参就会发生自动类型转换。
将上面的代码补充完整:
运行结果:#include <stdio.h>
int sum(int m, int n){
int i, sum=0;
for(i=m; i<=n; i++){
sum+=i;
}
return sum;
}
int main(){
int begin = 5, end = 86;
int result = sum(begin, end);
printf("The sum from %d to %d is %d\n", begin, end, result);
return 0;
}
The sum from 5 to 86 is 3731
定义 sum() 时,参数 m、n 的值都是未知的;调用 sum() 时,将 begin、end 的值分别传递给 m、n,这和给变量赋值的过程是一样的,它等价于:
m = begin;
n = end;
函数不能嵌套定义
强调一点,C语言不允许函数嵌套定义;也就是说,不能在一个函数中定义另外一个函数,必须在所有函数之外定义另外一个函数。main() 也是一个函数定义,也不能在 main() 函数内部定义新函数。下面的例子是错误的:
#include <stdio.h>
void func1(){
printf("http://c.biancheng网站站点" rel="nofollow" />
#include <stdio.h>
void func2(){
printf("C语言小白变怪兽");
}
void func1(){
printf("http://c.biancheng网站站点" rel="nofollow" />
- 随机文章
- 中国 马尔代夫 战略(中马合作加速!中国将继续加强与马尔代夫战略合作)
- 西安 马尔代夫(西安直飞马尔代夫:梦幻度假之旅开始啦!)
- 董路 国足 马尔代夫(国足主教练董路带领球队前往马尔代夫进行备战:新闻报道)
- 仙桃马尔代夫游艇(豪华游艇探索马尔代夫:诱人仙桃之旅)
- 东方马尔代夫海边(东方马尔代夫:海天一色间的度假胜地)
- 国足输过马尔代夫(中国足球队在与马尔代夫的比赛中落败)
- 云南马尔代夫现状(云南一马尔代夫景点的发展及现状分析)
- 曲阳马尔代夫在哪(曲阳旅游马尔代夫,蓝天白沙找你来!)
- 国际大师马尔代夫(国际象棋大师们远赴马尔代夫参加比赛)
- 新西兰和马尔代夫(新西兰和马尔代夫合作加强旅游业发展)
- 怎么到达马尔代夫(旅行必备!如何前往美丽的马尔代夫?)
- 浙江马尔代夫面积(浙江小岛变身马尔代夫,面积颇具惊喜)
- 湛江马尔代夫旅游(湛江出发,享受马尔代夫海岛度假之旅)
- 此生必去马尔代夫(探秘马尔代夫:体验此生必去的天堂!)
- 直达马尔代夫航班(快捷直达:非凡航空新增马尔代夫航线)
- 海滩马尔代夫壁纸(美丽的马尔代夫沙滩:免费高清壁纸。)
- 盛伦 马尔代夫(盛伦岛:马尔代夫奢华渡假胜地)
- 李李佳琦马尔代夫(李佳琦闪耀马尔代夫,引领美妆新起点)
- 广州马尔代夫花园(广州马尔代夫花园:享受浪漫私密空间)
- 洲际 马尔代夫(洲际酒店在马尔代夫的豪华体验)
- 辉县薄壁马尔代夫(辉县打造薄壁马尔代夫式地中海度假村)
- 松滋马尔代夫堵车(松滋马尔代夫道路拥堵严重,惹人头疼)
- 航拍 马尔代夫(马尔代夫的鸟瞰美景)
- 马尔代夫高清美图(马尔代夫绝美风光,惊艳高清美图!)
- 非洲马尔代夫海岛(非洲的马尔代夫:探索神秘的安泽拉岛)
- 越南马尔代夫女足(越南女足与马尔代夫女足比赛结果曝光)
- 兰州 马尔代夫(兰州打造马尔代夫风情,打破传统景区模式)
- 预定酒店马尔代夫(预订马尔代夫酒店,让你的假期更完美)
- 瓦伦西亚马尔代夫(瓦伦西亚足球俱乐部将在马尔代夫集训)
- 马尔代夫东航里程(东航解禁马尔代夫,积攒里程再次起飞)
