c语言基础之函数

实参和形参

主调与被调函数间有数据传递关系,这就是有参函数

在定义函数时,函数名后面括号中的变量名称为“形式参数”,

在主调函数调用一个函数时,函数名后面括号中的参数(可以是表达式)称为“实际参数”。

注意:发生调用时,调用函数把实参的值复制一份,传送给被调用函数的形参,从而实现调用函数向被调用函数的数据传送。

1. 形参调用时占据内存,调用结束后所占存储单元被释放
2. 实参可以是常量,变量,表达式,函数,但进行函数调用时必须具有确定的值. 
3. 实参对形参的数据传送是单向的。 
4 .实参和形参占用不同的内存单元,即使同名也互不影响

#include<stdio.h> 
void fun(int x)// x是形参,在调用前不占内存
{
	printf("hello x = %d\n",x); 
} 
int main()
{
	int x = 20;
	fun(x); //y是实参,内存中实际存在 
}

 

/*函数的返回值通过return语句来获取,当不需要函数返回值时,可省去return语句
return语句的后面可以是变量,也可以是表达式:如 return(a > b)*/ 
#include<stdio.h> 
int fun(int x,int y)//不需要返回值用void 
{
	return(x + y);
	
} 
int main()
{
	int sum = fun(10,20);//类型必须一样,int类型的函数需定义一个int类型的变量来接受  
	printf("sum = %d\n",sum);
	return 0;
}

函数声明和定义
函数声明的作用是把函数名,函数参数的个数和参数类型等信息告诉编译器,以便在调用时,编译系统能正确识别并检查调用是否合法
 
格式 : 函数类型 函数名 (参数类型1,参数类型2,···参数类型n);

当一个函数在定义之前被调用,编译系统会在函数调用处停止并报错,函数声明可以使编译器“忽略”这个错误,继续下面的代码 
 

#include<stdio.h>
double fun(double x,double y);//声明有fun这个函数 
int main()
{
	double sum = fun(1.2,1.3);//调用这个函数 
	//不管里面有没有参数都要用(),如fun(); 
	printf("sum = %.2f\n",sum);
	printf("%d",fun(1.2,1.3)); //两种输出语句一样  
	return 0;
}
double fun(double x,double y) 
{
	return (x + y);
}//定义这个函数

2018.7.24

函数的嵌套

函数不允许嵌套定义,但允许嵌套调用 。*/ 
#include<stdio.h>
int unfun(int y)
{
	printf("i am unfun y = %d\n", y+1);
	return 0;
 } 
 int fun(int x)
 {
 	unfun(x);//调用unfun 
 	printf("i am fun x = %d\n",x);
 	return 0;
 }
 int main()
 {
 	fun(20);//调用fun 
 	return 0;
 }

函数递归

//计算5的阶乘
#include<stdio.h>
int fac(int n)
{
	int t;
	if(1==n||0==n)
	return 1;
	else
	{
		t = n*fac(n-1);
		return t;//返回所需要的值。
	}
 }  
 int main()
 {
 	int f = fac(5);//太大的值会超过int保存范围 
 	printf("jc= %d \n",f);
 	return 0;
 }

2018.7.25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值