Linux C程序设计--函数

1.概述

    函数是模块化程序设计思想的产物,是构成C语言程序的基本功能模块,它完成一项相对独立的任务。一个C语言程序是若干函数构成,在构成C程序的诸多函数中有且只有一个主函数。函数是程序的最小组成单位。所有函数之间的关系是平行的,没有从属的概念。

    在C语言中函数可以分为两类,一类是由系统定义的标准函数,另外一种是自定义函数。

2.函数定义与声明

2.1函数定义

函数的定义必须遵循“先定义,后使用”的原则。函数的一般格式:

类型说明符 函数名(类型说明符 形参变量1,类型说明符 形参变量2,......)

声明语句部分;

执行语句部分;

在函数定义是需要定义函数头,函数体两个部分。

函数头:函数名,函数类型和形式参数表;

函数体:函数体是函数头下面最外层一对花括号里面的代码,它用以实现函数的功能,函数体内可以有函数说明,变量说明,可执行语句。例:

void function(void)
	{
	
	}

2.2函数声明

1.标准库函数的说明

    标准库函数可以在程序的开头部分用#include进行文件包含,printf()以及sqrt()等都属于这种函数。

2.自定义函数的说明

在函数与主调函数在同一个程序文件中,需再调用前对语句进行说明:

    类型说明符 函数说明符(类型说明符 形参变量1,类型说明符 形参变量2,......);

3.函数参数,返回值与调用

3.1函数的参数

    函数的参数分为形参与实参两种,作用是实现数据传送。形参没有具体的值,所以称它为形参,也叫虚参,实参有确定的值,所以称它是实际参数。

实参与形参之间的关系:

1.实参的个数,类型应该和形参的个数和类型一致,调用函数时,系统给形参分配存储单位,并且把实参的数值传递给形参。

2.实参与形参分别属于主调函数与被调函数,具有不同的内存单位。所以在函数调用时形参发生改变,不会影响到实参。

3.实参与形参之间是“单向值传递”,只有实参传递给形参,形参不会传递给实参。

实参与形参结合实例:

#include "stdafx.h"

float add(float x,float y)
{
float z;
z=x+y;
return z;
}

int _tmain(int argc, _TCHAR* argv[])
{
	float a,b,sum;
	float add(float x,float y);
	scanf("%f,%f",&a,&b);
	printf("sum=%f\n",add(a,b));
	return 0;
}


3.2函数返回值

函数的值只能通过return语句返回主调函数,当遇到return时,方法执行将终止。

return语句的使用一般形式为:

return (表达式)

return语句应书写在函数体的算法实现部分,圆括号可以省略

3.3函数调用

在C语言中,可以用以下几种方法调用函数:

1.函数表达式。例:a=add(b+c);

函数作为表达式的一项,出现在表达式中,以函数返回值与表达式的运算,这种方式要求函数是有返回值的。

2.函数语句。例:function();

C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。

3.函数参数。例:a=add(b,add(c,d));

函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传递,因此要求该函数必须有返回值。

3.3.1调用说明

1.函数名称必须与具有该功能的自定义函数名称一致;

2.实参在数量,类型,顺序上应严格和形参匹配;

3.函数调用也是一种表达式,它的值是函数的返回值;

4.被调函数可以是自定义函数,也可以是系统函数,也可以是调用自身;

5.被调函数中可以点用函数;

例:编写两个函数,求两个整数的最大公约数,最小公倍数

#include "stdafx.h"

int GCD(int m,int n)
{
	int p=0;
	while(m%n)
	{
		p=m%n;
		m=n;
		n=p;
	}
	return n;
}

int LCM(int m,int n)
{
	int p=GCD(m,n);
	return(m*n/p);
}

int _tmain(int argc, _TCHAR* argv[])
{
	int m,n;
	printf("input m,n:");
	scanf("%d,%d",&m,&n);
	printf("Greatest Common Divisor is:%d,Least Common Multiple is %d\n",GCD(m,n),LCM(m,n));
	return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_41141741/article/details/79716544