【新手C语言】5.0 初识函数

【概述】
计算机语言中,我们常用方法来归类一些“我们会反复使用且有规律的代码”,一个方法会含有方法名返回值参数列表,一些语言还有修饰符
而函数就属于方法的一种,利用方法,我们可以快速进行一些操作

【方法声明】
<放回类型> <方法名> (参数列表){
方法执行的语句;
}

其中,返回类型除了我们之前提到的参数(int,double,boolean...),还可以是void,viod表示这个方法不返回任何数值

比如

void sum(int begin,int end){
	int i ; 
	int sum = 0 ; 
	for(i=begin ; i<=end ;i++){
		sum+= i;
	}
	printf("%d 到 %d的和是%d \n",begin,end,sum);
}

这里申明了一个名为sum的方法,在使用它的时候,我们需要给它两个值(beging和end),而sum方法不会返回任何结果
方法需要在“使用它之前”就被定义出来,不能像Java那样写在主方法的后面
sum方法的具体使用如下:

#include <stdio.h>
//定义sum方法
void sum(int begin,int end){
	int i ; 
	int sum = 0 ; 
	for(i=begin ; i<=end ;i++){
		sum+= i;
	}
	printf("%d 到 %d的和是%d \n",begin,end,sum);
}
//完成sum方法的定义,下面我们只需要在主方法里面调用就行了

//主方法
int main (void){
	sum(1,10);   //在这里,我们调用了自己的sum函数,给予了sum方法的begin=1,end=10 
	sum(20,30);  //begin=20 end=30
	sum(35,45);  //begin=35 end=45
	; return 0 ;
} 

【return】
return用于方法中,我们会结束方法的执行并且将对应的数值返回
当使用void类型的函数时,函数是没有返回值的,也就是可以没有return

#include <stdio.h> 、

//返回值是int类型的函数max 
int max (int a,int b)
{ 
	int ret ; 
	if(a>b){
		ret = a ; 
	}else {
		ret = b ; 
	}
	return ret ; //返回一个ret的数值,另外在一个函数里面可以有多个return语句,而且return不一定要在尾(不过这不是单一出口,习惯不好) 
}

int main () {
        int a,b,c ; 
        c = max(12,10);
        printf("%d \n ",c);
        return 0 ; 
}

【函数原型】
现在我们已经基本明白了方法怎么定义与使用了,但是每次都要先定义方法再使用它————或者说定义总要写在主方法前面,这很影响美观
那么有没有办法让方法可以写在主方法后面呢,就像Java那样?
有的,不过在这么做之前我们先需要进行函数原型的声明

#include <stdio.h>
//C的编译器是由上而下来分析代码的,和eclipse不一样,这导致你要用的函数需要在前面先写出来
//这个在各编译器是不一样的,不过还是建议用的先写在前面

//但是可以把函数头加上分号放在前面,其它部分放在后面,这样就可以了。这个做法叫做  原型声明 
void sum (int a , int b);  //声明 

int main ()
{
	sum(1,10);
	; return 0 ; 
}

void sum (int a, int b){  //定义 
	int i ; 
	int sum = 0 ; 
	for (i =a ; i <=b ; i ++){
		sum +=1 ;  
	}
}
//另外,原型声明里面可以只给参数类型,不给参数名字。因为原型声明的意义就是让编译器知道有这个东西 

编译器是自上到下处理代码的,要是你莫名其妙地还没解释清楚就让你的编译器做这个“方法”,那显然是不行的
原型声明的存在就是让编译器“提前知道”需要什么数值,这一步又会返回什么数值,然后我们就可以把方法的详细描述写在后面了

posted @ 2021-04-22 19:46  RetenQ  阅读(292)  评论(0编辑  收藏  举报