函数,超重点

本文详细介绍了C/C++中的函数概念,包括不同类型的函数(有参数有返回值、无返回值等),函数声明与实现的格式,以及如何根据main函数的结构分析函数模板。此外,还提供了函数分类、参数列表和编程作业示例,强调了代码复用和清晰性的重要性。
摘要由CSDN通过智能技术生成

函数【重点】

1. 函数解决的问题

C/C++ 函数对应英文 Function

函数可以解决代码中,【功能模块代码】大量重复使用,如果按照基本的 CV 操作处理当前的功能使用,会导致以下问题

  • 代码冗余
  • 代码阅读性极差
  • 代码维护性极差
  • 代码的可移植性极差
2. 根据 main 函数格式分析 C 语言函数模板

根据 main 函数总结 C/C++ 函数基本特征【三要素】

int main(int argc, char const *argv[])
{
    // 函数体
    return 0;
}

/*
基本格式分析:
	返回值类型 函数名(形式参数列表)
	{
		函数体;
	}
	
	returnType functionName(ParameterTypes)
	{
		Function body;
	}

int:
	对应当前函数的返回值类型/returnType,要求当前函数在执行之后,必须提供满足函数声明告知的返回值类型,对应的具体数值【返回值类型】【数据类型一致化要求】

main:
	函数名/functionName,,调用使用函数的必要名称。函数名具备一定的唯一性
		1. 调用函数需要通过函数名
		2. 函数名是一个【指针常量】
	要求:
		1. 满足命名规则
			a. 小驼峰命名法
				setStatus
			b. 下划线命名法
				set_status
		2. 满足见名之意,动宾结构

(int argc, char * argv[]):
	形式参数列表/ParameterTypes,当前函数执行所需的外来必要参数,函数声明有对应的参数需求,在实际调用时必须提供对应数据类型的实际参数,严格遵守【数据类型一致化要求】

{ 函数体; }:
	函数体/Function body,当前函数封装的功能代码,决定了当前函数的作用。
	要求:函数功能单一化,方便后续的复用
*/
3. 函数的分类

函数的分类是根据返回值类型和形式参数列表情况进行分类

  • 有参数有返回值函数【重点】
  • 有参数无返回值函数
  • 无参数有返回值函数
  • 无参数无返回值函数
3.1 有参数有返回值函数
3.1.1 需求
调用一个函数,通过函数得到两个整数之和
3.1.2 函数分析
返回值数据类型★
	两个整数相加得到的结果一定是整数,如果考虑数据的范围变量和数据的容量安全,可以考虑使用 long 类型作为当前函数的返回值数据类型,如果考虑实际操作数据范围并未超过 int 范围,可以依然使用 int 类型作为函数的返回值类型。
	这里选择 int 类型作为函数的返回值类型。

函数名
	【要求】见名知意,动宾结构,小驼峰/下划线命名法,不要使用拼音,不要使用简拼,要求使用完整的英文单词组合。
	get_sum_of_two_int_number 或者 get_sum

形式参数列表★
	参数个数 2 个
    参数类型【整型】,对于整数数据类型考虑,大多数使用的都是 int 类型,当前函数所需的参数列表是两个 int 类型参数。
   	形式参数列表格式:
   		(int n1, int n2)
		提供给形式参数列表的内容包括数据类型和对应的形式参数列表的参数名称 int 是数据类型, n1, n2 是形式参数名称,可以直接在函数内部使用,作为函数体的变量,不同的参数使用逗号隔开!!!
3.1.3 函数声明
int get_sum(int n1, int n2);
// 告知编译器当前声明了一个函数,函数名为 get_sum
// 同时告知返回值类型为 int ,形式参数列表为(int, int)
3.1.4 函数实现

在代码中,函数与函数同级关系,不存在函数内部存放其他函数,代码实现的流程

  1. 函数声明
  2. 函数实现
  3. 函数调用
#include <stdio.h>

// 1. 函数声明,对于当前函数声明,完成对应的文档注释
/*

计算机用户提供的两个 int 类型数据之和,通过返回值告知用户

@param n1   用户提供的 int 类型数据
@param n2   用户提供的 int 类型数据
@return     用户提供的两个 int 类型数据相加之和;

*/
int get_sum(int n1, int n2);

int main(int argc, char const *argv[])
{
    int ret = 0;

    printf("调用海函数之前: %d\n", ret);

    // 3. 函数调用
    /*
    
    函数调用规范要求:
                1. 必须有对应的函数名
                2. 必须有小括号
    提供给当前函数的实际参数,严格按照形式参数列表声明的参数类型提供当前 get_sum 函数所需参数是两个 int 类型数据,提供两个整数
    
    使用 int 类型变量 ret 存储 get_sum 函数运行得到的返回值数据
    */
    ret = get_sum(10, 30);
    printf("调用海函数之后: %d\n", ret);
    return 0;
}
// 2. 函数实现,完成函数体内容/功能模块代码,函数实现位置在 main 函数之后
int get_sum(int n1, int n2)
{
    /*
    当前函数有对应的函数返回值要求,需要使用一个关键字

    return 关键字有两个作用
                        1. 返回 return 之后的数据内容,要求数据类型满足返回值数据类型要求
                        2. 函数运行到 return 当前函数内容结束, return 关键字可以用于函数终止
    */
    return n1 + n2;
}
3.1.5 函数执行图例

在这里插入图片描述

3.2 有参数无返回值函数
3.2.1 需求
在控制台展示用户提供的 int 类型数据
【重点,注意】
	在控制台展示不是函数的返回值,并且控制台展示对于项目研发没有什么用!!!
3.2.2 需求分析
返回值数据类型★
	当前函数分析,没有对应的返回值类型,但是函数的返回值位置对于普通函数而言必须有对应的站位,使用 void 关键字在函数返回值位置,告知调用者,告知编译器,当前函数没有返回值数据类型
	void
	
函数名
	【要求】见名知意,动宾结构,小驼峰/下划线命名法
	print_int_value

形式参数列表★
	整个函数的需求是在控制台展示用户提供的 int 类型数据,用户提供的 int 类型数据就是函数的参数,当前参数有且只有一个,数据类型为 int 类型
	(int n);
		int 表示数据类型,n 表示当前形式参数列表的参数变量名称
3.2.3 函数声明
void print_int_value(int num);	
3.2.4 函数实现

在代码中,函数与函数同级关系,不存在函数内部存放其他函数,代码实现的流程

  1. 函数声明
  2. 函数实现
  3. 函数调用
#include <stdio.h>

// 1. 函数声明
/*
在控制台打印展示用户提供的 int 类型数据

@param n 用户提供的 int 类型数据
*/
void print_int_value(int n);

int main(int argc, char const *argv[])
{
    // 3. 函数调用,通过函数名和对应的实际参数调用目标函数
    print_int_value(200);

    return 0;
}

// 2. 函数实现
void print_int_value(int n)
{
    printf("用户提供的 int 类型数据为: %d\n", n);
}
3.2.5 函数执行图例

在这里插入图片描述

3.3 无参数有返回值函数
3.3.1 需求
调用函数,得到一个整数 5  
3.3.2 需求分析
返回值数据类型★
	当前函数调用,获取到一个整数 5,对应数据类型为 int 类型,所以当前函数的返回值数据类型
	为 int 类型
	
函数名
	【要求】见名知意,动宾结构,小驼峰/下划线命名法
	give_me_five

形式参数列表★
	当前函数不需要任何外来数据提供,就可以执行,没有参数,但是函数的固定格式中,必须有小括号存在。提供一个小括号,但是没有任何内容,表示没有参数。
	()
3.3.3 函数声明
int give_me_five();
3.3.4 函数实现

在代码中,函数与函数同级关系,不存在函数内部存放其他函数,代码实现的流程

  1. 函数声明
  2. 函数实现
  3. 函数调用
#include <stdio.h>

// 1. 函数声明
/*
当前函数调用返回一个整数 5 

@return 返回值数据类型为 int 类型,返回整数常量 5
*/
int give_me_five();

int main(int argc, char const *argv[])
{
    int ret = 0;
    printf("Before Function call ret: %d\n", ret);

    // 3. 函数调用
    ret = give_me_five();
    printf("After Function call ret: %d\n", ret);
    return 0;
}

// 2. 函数实现
int give_me_five()
{
    return 5;
}
3.3.5 函数执行图例

在这里插入图片描述

3.4 无参数无返回值函数
3.4.1 需求
直接在控制台展示 距离过年放假还有 29 天
3.4.2 需求分析
返回值数据类型★
	当前函数内容没有任何的数据返回,使用 void 占位函数返回值
		
函数名
	【要求】见名知意,动宾结构,小驼峰/下划线命名法
	happy_holiday
	
形式参数列表★
	当前函数执行无需任何的外来数据,没有参数,仅使用小括号告知当前内容为函数
	()
3.4.3 函数声明
void happy_holiday();
3.4.4 函数实现
#include <stdio.h>

// 1. 函数声明
/*
 * 控制台展示距离放假的时间!!!
 */
void happy_holiday();

int main(int argc, char * argv[])
{
	// 3. 函数调用
	happy_holiday();
}

// 2. 函数实现
void happy_holiday()
{
	printf("距离放假还有 29 天\n");
}
4. 作业

要求:

  1. 方法功能单一化!!!越单一越好!!!
  2. 不允许在方法中使用 scanf 从键盘上获取数据!!!
  3. 所有方法必须调用通过,可以运行
  4. 方法体实现,调用通过就OK
  5. 完成每一个方法对应的文档注释,注意格式。
//封装一个方法,返回两个整数里的较大那个
int max_Of_number(int num1, int num2) {
   


//封装一个方法,返回两个浮点数里的较小那个
double min_Of_number(double num1, double num2) {

}

//封装一个方法,来判断一个字符是否是大写字母
//如果是,返回true,否则返回false
int is_my_upper(char c) {
    
}

//封装一个方法,来判断一个字符是否是数字字符
//如果是,返回true,否则返回false!
int is_my_number(char c) {
    
}

//封装一个方法,来判断一个字符是否是英文字母
//如果是,返回true,否则返回false! 
int is_my_english(char c) {
    
}

//封装一个方法,传入一个字符,如果是大写那么转化小写然后返回,否则保持不变返回
char to_my_lower(char c) {
    
}

//封装一个方法,实现将一个正整数,倒序打印输出! 1234 4321 
void reverse(int number) {
	
}

//表达式(立方)	编写程序,计算该数的立方
double cube(double number) {
   
}

//流程控制(闰年问题)	输入一个年份,判断该年份是平年还是闰年:
//注: 闰年就是第二个月有29天的那一年, 能被4整除但是不能被100整除的是闰年, 或者能被400整除的也是闰年
//如果是返回 true  不是返回false
int is_leap(int year) {
    
}

//表达式(正数判断)传入一个数字, 判断这个数是否是正数(是,打印YES,不是输出NO)
void is_positive_number(int num) {
    
}
  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值