【C语言】C语言中的函数及参数传递,变量的作用域和生存期、多文件程序、宏定义

目录

1、函数的定义、调用、声明

1.1函数的定义

1.2 函数的调用

1.3函数调用的形式

1.3.1代码演示

 1.4函数的声明

1.4.1函数声明的格式

 2、函数参数的传值

2.1 单向传递

2.2双向地址传递

 3、嵌套调用和递归调用

3.1嵌套调用

3.2递归调用

 4、变量的使用范围和存储类别

4.1 局部变量与全局变量

4.2变量的存储类别

4.2.1auto类型的局部变量

4.2.2static类型的局部变量、全局变量

4.2.3全局变量

4.2.4 extern类型的全局变量

4.2.5register类型的全局变量

5、多文件程序

5.1C源文件的划分

5.2C源文件的格式

6、用带参数的宏代替公式型函数


1、函数的定义、调用、声明

1.1函数的定义

当 C编译系统提供的标准数据库不满足用户需要时,用户可以自己定义函数

C语言中函数的基本格式为:

函数类型 函数名 (类型1  形式参数1,类型2  形式参数2,……类型n 形式参数n)

{

说明部分

语句部分

}

说明:

(1)一般将函数类型 函数名 (类型1  形式参数1,类型2  形式参数2,……类型n 形式参数n)称为函数的首部,或函数头;大括号内称为函数体。

(2)函数类型,即:函数值的类型

(3)函数名用合法标识符命名,最好能够有见名知意的效果,函数名后紧跟一对小括号,中间不要加空格

(4)形式参数简称形参,指函数中的自变量,它们是从函数外部向函数内部运送值的数据通道。形式参数根据需要可以有1个、多个或没有。定义时每个形参(自变量)都应指出各自的类型

(5)函数体主要包括变量说明和可执行语句,两者可以根据情况缺省。若都为空,也合法,称为空函数

(6)变量说明部分主要是定义运算所需要的变量。因为这些变量在函数的内部定义,又称为局部变量。只在函数内部有效,不能在函数外使用

(7)语句部分主要是利用已定义的变量进行运算,得到结果

(8)有些函数末尾会写return语句,相当于是从函数内部向函数外部运送值的数据通道。返回值类型需要跟函数类型匹配,即:赋值兼容。若程序不需要计算结果,那就将此函数类型写为void。

注意:

一个函数中可以有多个return语句

return语句后面可以是变量、常量、表达式,也可以用小括号将它括起来

若无return语句,遇到函数结尾的“}”时,程序自动返回调用函数

函数类型最好与return语句返回的值类型保持一致,若不一致,函数结果以函数类型为准,由C编译系统自动完成类型转换。

例如

int f(int a,int b)

{

int s;

s=a+b;

return s;

}

1.2 函数的调用

函数定义完毕后,需要使用一下,验证函数定义是否正确。

使用C程序的函数,称为函数调用,函数调用的格式:

        函数名(实际参数1,实际参数2,……,实际参数n);

实际参数简称实参,可以是常量、变量、表达式。实参的个数、类型应该跟形参一一对应匹配。实参主要是用于给形参一一对应传送数据。

1.3函数调用的形式

使用函数调用的形式有:

(1)函数调用作为一条语句;

(2)函数有明确的返回值时,函数调用可以当作普通变量使用,作为表达式的一部分。

(3)函数有明确的返回值时,函数调用可以作为其他函数的实参。

1.3.1代码演示

题目1:编写函数是吸纳打印输出以下图形的功能

/*
   *
  ***
 *****
******* 
*/
#include <stdio.h>
void printStar(){
	int i,j,k;
	for(i=0;i<=3;i++){//行数 
		for(j=0;j<=2-i;j++)//空格 
		{
			printf(" "); 
		}
		for(k=0;k<=2*i;k++){
			printf("*");
		}
		printf("\n");
	}
}
int main(){
	printStar();
	return 0;
}

题目2:定义pow函数,实现求x^{y}的功能。只考虑x和y均为正整数的情况

#include<stdio.h>
int pow(int x,int y){
	int i,p=1;
	for(i=1;i<=y;i++){
		p*=x;
	}
	return p;
}
int main(){
	printf("%d的%d次方是%d\n",5,3,pow(5,3));
	return 0;
}

 题目3:定义bigger函数,实现求2个整数中较大值的功能。利用此函数求3个整数中的最大值

//定义bigger函数,实现求2个整数中较大值的功能。利用此函数求3个整数中的最大值
#include<stdio.h>
int bigger(int a,int b){
	return a>b?a:b;//求a,b中较大值作为结果返回 
}
int main(){
	int x,y,z,max;
	printf("请输入三个需要比较的数:");
	scanf("%d%d%d",&x,&y,&z);
	max=(bigger(bigger(x,y),z));//三个数需要调用两次 
	printf("最大值为:%d\n",max);
	return 0;
	
}

 1.4函数的声明

为了防止C编译系统会提示找不到函数,可以在函数调用前面加上函数声明。

1.4.1函数声明的格式

函数声明由函数首部加上分号组成。例如:函数f的函数声明为:int f(int a,int b);也可以将参数名省略,例如:int f(int,int);。

函数声明使用

#include<stdio.h>
int f(int a,int b);//函数声明 
int main(){
	int c;
	c=f(3,5);
	printf("c=%d\n",c);
	return 0;
}
int f(int a,int b){
	int s;
	s=a+b;
	return s;
} 

 2、函数参数的传值

2.1 单向传递

当基本类型的常量或变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值