模块化程序设计方法与函数

1、在C语言的程序设计时,通常将一个大的程序功能分成若干个较小的模块,每个模块编写成结构清晰,接口简单,容易理解的程序段,即函数。这种方法就叫做模块化的程序设计方法

2、函数的定义包括函数的包括函数的声明和函数的实现。函数的声明包括返回类型,函数名称和形参列表,函数的实现即是在函数声明后面的花括号里面包含的内容。函数的定义格式如下:

返回类型   函数名称(形式参数表){

说明语句序列

可执行语句序列

}

函数的定义的例子:

int power(int di,int zhi)
{
	int result = 1;
	int i = 0;	
	for(;i < zhi; i++)
	{
		result *= di;	
	}
	
	//1、返回值给调用者;
	//2、结束整个函数 
	return result;
} 
注意:①函数名是唯一标识一个函数的名字,在一个程序中,不同的函数其名字不能相同。

    ②函数的类型可以是除函数和数组外的任何类型,对于一个具体的函数而言,它的类型是唯一的,并且通常与函数的返回值类型一致,当类型为void时,函数没有返回值。

    ③形式参数用于调用函数和被调用函数之间的数据传递,需要进行类型说明,形参可以使空的,也可以是由多个形参组成。当形参列表中有多个形参时,每个形参之间用逗号隔开。   

    ④函数的定义应当在函数调用之前,如果要定义在调用之后,则应当在前面声明一次。

    ⑤C语言中函数没有从属关系, 不能嵌套定义,各函数之间是独立的。

3、函数的参数

无参函数:在调用无参函数时,主调函数不将数据传递给被调用函数,无参函数可以带或者不带返回值。

有参函数:在调用函数时,在主调函数和被调函数之间有数据传输。

定义函数式的参数称为形参,形参在函数未被调用时没有确定值,只是形式上的参数,调用函数时的参数称为实参,实参可以是变量、常量、表达式,有确定的值。函数定义时,形参不占用内存,在发生调用时,才分配内存,并接受实参传来的值。

函数的形参和实参个数要求相等,对应类型一致,且顺序要相同

形参用于调用函数和被调函数之间的数据传递,因此需要类型说明

4、数据传递的形式:

值传递。例子如下

#include<stdio.h>

void function1(int a)
{
	a++;
	printf("函数内:%d\n",a);	
}

void main()
{
	int num = 10;
	function1(num);
	printf("调用后:%d\n",num);
}

执行结果:
函数内:11
调用后:10
地址传递(如数组),例子:
#include<stdio.h>

void function2(int a[])
{
	a[0]++;
	printf("函数内:%d\n",a[0]);	
} 

void main()
{
	int num[1] = {10};
	function2(num);
	printf("调用后:%d\n",num[0]);
}

执行结果:
函数内:11
调用后:11
5、数组作为函数参数

数组名作为函数参数时,实参数组的长度必须是确定的,而形参数组的长度可以是不确定的,但是数组名后面的[ ] 不能省略,在引用时,形参数组的长度不得超过实参数组的长度。

数组作为函数参数的例子:

//求数组元素的和

#include<stdio.h>
#define N 10

int fun(int b[])
{
	int s = 0, i;
	for(i = 0; i < N; i++)
	{
		s += b[i];
	}
	return s;
}

void main()
{
	int a[N] = {1,2,3,4,5,6,7,8,9,10};
	printf("call fun: s = %d\n",fun(a));
}

执行结果:
call fun:s = 55
6、函数的返回值

无返回值的函数:void类型的函数。一般用来执行指定的一组

有返回值的函数:调用函数后,可以通过函数名待会函数值供主函数调用

函数的返回值语句的格式: 

return  表达式;  如return 0;

你可能感兴趣的:(模块化程序设计方法与函数)