5.1 函数的认识

一、为什么要用函数

①避免代码冗长:如果代码程序的功能比较多、规模比较大,把所有的代码放在主函数main中,会使主函数变得庞杂,头绪不清,使阅读和维护程序变得困难,此外,有时程序需要多次实现某一功能,就需要多次实现某一功能,就需要多次重复编写实现此功能的程序代码。

②模块化设计思路:人们自然会想到组装的办法简化程序设计的过程,如同组装电脑,先生产好各种部件,最后组装时需要什么就从仓库拿什么,直接装上就可以了。

③按功能划分:每个函数代表一个功能,而函数的名字要体现函数的功能含义,如sin函数实现求一个数的正弦函数,把它存放在函数库中,需要调用时,直接在程序上写sin就可以调用系统函数库中的函数代码,执行这些代码,就可以得到预期结果。

二、函数的三要素

 同变量一个道理,函数要先定义,再使用。

函数体:执行什么样的功能,所涉及的处理代码。

①函数名:函数的命名要能够体现函数的功能。

②参数列表:例如y=f(x),x就是参数,参数的个数根据需求自行定义。

③返回值:在y=f(x),y是函数根据x值和功能执行后的结果。

三、函数的封装

①定义无参数函数:

void表示没有返回值,括号()内无参数。

#include <stdio.h>
void printWelcome()
{
	printf("hello,world\n");
}
int main(){
	printWelcome();
}

②定义有参数有返回值的函数:

如y=f(x)一个参数一个返回值。

第一个int表示返回值的类型,括号里面是形式参数,形式参数需要包含变量类型和变量名,int-变量类型,data-变量名。

int getData(int data)
{
	return data-1;
}
int main(){
	int x;
	int y;
	puts("请输入一个数:");
	scanf("%d",&x);
	y = getData(x);
	printf("x=%d,y=%d\n",x,y);
	return 0;
}

③定义空函数:

程序设计,模块设计的时候占坑用。

void initWifi()
{}

四、函数的调用

1.函数名+(传递参数);

注意问题:①函数调用时不能带类型:如y=int f(x)是错误的,函数在封装时就已经声明了变量类型。②函数调用时形式参数不带类型,如y=add(int a,int b)。

见怪不怪:①函数当做表达式,用的是它的返回值。如printf("%d+%d=%d\n",x,y,add(x,y))②函数调用当做其他函数的参数,用的也是它的返回值。如z=add(x,y)+100

2.调用库函数

如果使用函数库,应该在文件开头用#include指令将调用有关库函数时所需要用的信息包含到本文件中,如 #include <stdio.h>是一个头文件,"stdio.h"包含输入输出库函数的声明,如果不包含"stdio.h"文件中的信息,就无法使用输入输出库中的函数。

3.函数的声明

如果自己定义的函数在调用的函数(主函数main)后面,应该在主函数中对被调用的函数作声明,声明的作用是将函数名,函数参数个数和参数类型等信息通知编译系统,以便在调用时能正确识别,并检查调用是否合理。

#include <stdio.h>

int getData(int a);//声明函数(函数原型+分号)
int main(){
	int a;
	int x;
	puts("请输入一个数:");
	scanf("%d",&a);			//获取数值
	x= getData(a);
	printf("实际参数a的内存地址是:%p,值为%d\n",&a,a);//打印实际参数地址
	return 0;
}

int getData(int a)		//创建函数getData获取数值功能
{
	printf("形式参数a的内存地址是:%p,值为%d\n",&a,a);//打印形式参数地址
	return 0;
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值