【跟着于老师学C/C++】6.1 functions

1 链接

B站链接

2 Why funcitons

  • 模块化编程
  • 代码复用
Struct Matrix//
{
	int rows;
	int cols;
	float * pData;
}

现在写个程序来找到矩阵中的最大值

Matrix matA;
float maxa = FLT_MIN;
for (int r = 0; r < matA.rows; r++)
	for(int c = 0; c < matA.cols; c++)
{
	float val = matA.pData[r * matA.cols + c];
	maxa = (maxa > val ? maxa : val);	
}

多个矩阵都想查询

  • 最简单的方法是拷贝赋值代码,然后修改变量名称
    • 容易改错
    • 维护困难<万一需要修改查找逻辑>
  • 解决方案
    • 使用函数

3 函数的定义

float matrix_max(Struct Matrix max)
{
float maxa = FLT_MIN;
for (int r = 0; r < matA.rows; r++)
	for(int c = 0; c < matA.cols; c++)
{
	float val = matA.pData[r * matA.cols + c];
	maxa = (maxa > val ? maxa : val);	
}
return maxa;
}

4 函数的调用方法

float maxa = matric_max(matA);

需要对函数的输入需要进行检查,

  • 检查matA.pData是不是NULL
  • 检查行列数是否合理

?思考:

怎么通知调用的函数函数出了问题

  • 返回值貌似不行

5 函数放在哪

5.1 被调用函数放在调用函数前

在这里插入图片描述

5.2 先声明再调用

在这里插入图片描述
编译器是从上往下读的。函数被调用前必须要声明。声明里的parameter可以省略,但必须有参数类型。

5.3 函数的声明放到一个头文件中

在这里插入图片描述
关于#ifndef DRAW_H #define DRAW_H #endif的几点说明

  1. 此宏定义的名字可以指定,一般跟头文件有关
  2. 次宏定义的作用的防止函数重定义错误

6 函数是怎么运行的

call return
在这里插入图片描述
函数运行是有代价的

7 conclusion

从为什么使用函数入手,讲解了怎么定义函数,怎么调用函数以及怎么组织函数,到最后讲了函数的运行做了哪些事情。期待下一期。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值