C语言学习(第四章上部分)

第四章函数

一、为什么要用函数(函数的优点)

1、可以避免代码冗长

2、模块化的设计思路

3、按功能来划分,每个函数代表一个功能,在写代码时函数的名称要体现函数的功能含义,类似变量标识符a=f(x)

二、函数的声明

1、说明:在程序中用到的所有函数,必须“先定义,后使用”,必须事先按规范对它进行定义,指定它的名字、函数返回值的类型、函数实现的功能以及参数的个数与类型。

2、定义:抓住三要素

(1)函数名——体现功能

(2)参数列表:

        1、例如 z = f(x) —— x就是参数

        2、例如 z = f(x,y) —— x,y就是参数 —— 参数的个数根据需求自行定义

(3)返回值 —— 例如 y = f(x) —— y就是函数根据x的值和f的功能执行后的结果

3、函数体 —— 及执行什么样的功能,涉及的处理代码叫做函数体

三、函数的定义和调用

1、定义无参数函数

#include <stdio.h>

void printfwenzi() \\定义一个无参数的函数
{
	printf("欢迎来看我的学习文章\n");
}


int main()
{
	printfwenzi(); \\在函数main中调用名为printfwenzi的函数
	return 0;
}

2、定义有参数有返回值的函数

#include <stdio.h>

//三要素: 返回值,参数列表,功能
int add(int data1,int data2)//函数原型
{
	int ret;
	ret = data1 + data2;
	return ret;
}

int main()
{
	int x;
	int y;
	int z;
	
	printf("请输入一个数:\n");
	scanf("%d",&x);
	printf("请再输入一个数:");
	scanf("%d",&y);
	z = add(x,y);   //调用函数 add
	printf("%d+%d=%d\n",x,y,z);
	return 0;
}

3、定义空函数

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

#include <stdio.h>

int initWifi()
{


}

int main()
{
    int passwd;
    y = f(x);
    
    initWifi();
    return 0;
}

4、函数调用

(1)函数可以当做表达式 —— 用的是它的返回值

(2)函数调用当做其他函数调用的参数 ——— 也是用它的返回值

#include <stdio.h>

//三要素: 返回值,参数列表,功能
int add(int data1,int data2,int data3)//函数原型
{
	int ret;
	ret = data1 + data2 + data3;
	return ret;
}

int main()
{
	int x;
	int y;
	int z;
    int fret; //int ret
	
	printf("请输入一个数:\n");
	scanf("%d",&x);
	printf("请再输入一个数:\n");
	scanf("%d",&y);
    printf("请再输入一个数:\n");
    scanf("%d",&z);
	fret = add(x,y,z)+100;  //函数当做表达式
	printf("%d+%d+%d=%d\n",x,y,z,add(x,y,z));  //函数调用当做其他函数调用的参数
    printf("fret = %d\n",fret);
	return 0;
}

(3)注意事项(经常会犯的错误):1、int add(1,2) —— 带了返回值类型

                                                            2、add(int a,int b) —— 形参带类型了

三、形式参数和实际参数

  1、说明: 在调用有参数函数时,主调函数好被调用函数之间有数据传递关系,在定义函数时函数名称后面括号中的变量名称为“形式参数”(简称“形参”)或“虚拟参数”。在主调函数中调用一个函数时,函数名后面的括号中的参数称为“实际参数”(简称“实参”)。实际参数可以是常量、变量或表达式。

2、传递参数,传递的是值 —— 形参和实参值相同,但是地址空间不同

3、局部变量

4、案例

#include <stdio.h>

int bigdata(int x,int y) //定义函数 ,两个参数
{
	return x>y?x:y;  //三目运算符
}


int main()
{
	int data1;
	int data2;
	int bigone;
	printf("输入两个数:\n");
	scanf("%d%d",&data1,&data2);
	bigone = bigdata(data1,data2);
	printf("两个数据是%d,%d,大数是:%d\n",data1,data2,bigone);
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值