C Programming学习笔记【谭浩强老师编】(第七章用函数实现模块化程序设计)01 函数

发布时间:2023年12月25日

在这里插入图片描述



一、函数

(1) 一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。较大的程序,可分别放在若干个源文件中。这样便于分别编写和编译,提高调试效率。一个源程序文件可以为多个C程序共用。
(2) 一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明与定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。
(3) C程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。
(4) 所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是被操作系统调用的。
(5) 从用户使用的角度看,函数有两种。
① 库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。应该说明,不同的C语言编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。
② 用户自己定义的函数。它是用以解决用户专门需要的函数。
(6) 从函数的形式看,函数分两类。
① 无参函数。在调用无参函数时,主调函数不向被调用函数传递数据。
② 有参函数。主调函数在调用被调用函数时,通过参数向被调用函数传递数据。

二、定义函数

C语言要求,在程序中用到的所有函数,必须“先定义,后使用”。

定义函数应包括以下几个内容:
(1) 指定函数的名字,以便以后按名调用。
(2) 指定函数的类型,即函数返回值的类型。
(3) 指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要这项。
(4) 指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。这是最重要的,是在函数体中解决的。

1.定义函数的方法

1.定义无参函数
类型名 函数名()
{
函数体
}

函数体包括声明部分和语句部分。

在定义函数时要用“类型标识符”(即类型名)指定函数值的类型,即指定函数带回来的值的类型。

2.定义有参函数
类型名 函数名(形式参数表列)
{
函数体
}
int max(int x,int y)
{ int z; //声明部分
z=x>y?x:y; //执行语句部分
return(z);
}

三、调用函数

1.函数调用的形式

  1. 函数调用语句
    把函数调用单独作为一个语句。如printf_star();
    这时不要求函数带回值,只要求函数完成一定的操作。
  2. 函数表达式
    函数调用出现在另一个表达式中,如c=max(a,b);
    这时要求函数带回一个确定的值以参加表达式的运算。
  3. 函数参数
    函数调用作为另一个函数调用时的实参。如m=max(a,max(b,c));,又如:printf (″%d″, max (a,b));

形参和实参的数据传递
例7.2:输入两个整数,要求输出其中值较大者,要求使用函数来找到最大值

/* C++程序的基本结构 */
#include <stdio.h>
int Max(int a,int b){
if(a>b)
	return a;
if(a<b)
	return b;
if(a==b)
	return 1;
}

void main()
{
int Max(int a,int b);
int a,b,c;
printf("请输入两个数字,空格隔开\n");
scanf("%d %d",&a,&b);
c=Max(a,b);
if(c==1)
	printf("两个数字大小相等");
else
	printf("最大的数为%d\n",c);
}

#include <stdio.h>
int main()
{	int max(int x,int y);		//对max函数的声明
	int a,b,c;
	printf("please enter two integer numbers:");  //提示输入数据
	scanf("%d,%d",&a,&b);	//输入两个整数
	c=max(a,b);	//调用max函数,有两个实参。大数赋给变量c
	printf("max is %d\n",c);	//输出大数c
	return 0; }
int max(int x,int y)	//定义max函数,有两个参数
{
	int z;		//定义临时变量z
	z=x>y?x:y;	//把x和y中大者赋给z
	return(z);		//把z作为max函数的值带回main函数
}

函数调用过程中函数未调用时,形参不占用空间

函数的递归调用

文章来源:https://blog.csdn.net/weixin_43491496/article/details/123036330
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。