为实现特定目的而编写的一段可被调用的代码

简单地讲:函数就是一组语句,取了个名字

别名:子例程(routine)/方法(Method,一般面向对象的语言使用这个叫法)

函数的组成部分

以主函数为例:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
return 0;
}
返回类型 int
函数名 main
参数 (int argc, char *argv[])
函数体 { return 0; }

函数三类

函数分三种:main函数、系统函数、自定义函数。

int main(int argc, char *argv[]) {// main:主函数
int ret = printf("震惊!\n");// printf:系统函数
printf("打印字符数:%d",ret);// printf:系统函数
return 0;
}
#include <stdio.h>
// 自定义函数:先定义,再使用
int max( int num1, int num2 ) {
int nRet = (num1 > num2? num1:num2);
return nRet;
} int main(int argc, char *argv[]){
int nMax = max( 2 , 3 );// max自定义函数
printf("%d", nMax);
}

自定义函数使用口诀:

  • 先定义,再调用;
  • 传参数,得结果。

函数的好处

  • 复用性+(拒绝重复代码)
  • 维护性+(便于修改,可以只改函数里的代码)
  • 可读性+(便于理解,这需要给函数取个合适的名字,要求见名知意)

当同一段代码出现两次时,就该考虑把这段代码封装到一个函数中,以减少重复代码。

参数(parameter)

形参/形式参数(formal parameter /parameter)

定义函数时,函数名后面括号中带类型的变量——规定参数必须是什么类型。

实参/实际参数(actual parameter /argument)

调用函数时,实际传入的参数,必须和形参的类型匹配。
#include <stdio.h>
int max(int x, int y) {//函数定义:形式参数
int nRet = (num1 > num2? num1:num2);
return nRet;
} int main(int argc, char** argv) {
int a = 100;
int y = 200;
int nMax = max(a, y);// 函数调用处:实际参数
printf("%d", nMax);
return 0;
}

形参和实参的名字可以不一样——

返回值

  • 无返回值——方便
  • 有返回值——严谨

函数可以没有返回值,这时参数类型为void

函数主体中可以加【return ;】(只返回而无值)

也可以不加(自然结束。)

void luck(int n) {
if (1 == n) {
printf("恭喜您,获得100元代金券,购物满3000可用");
return;// 直接返回
}
printf("很遗憾没中奖,再去消费1000元又能来抽奖了");
// 自然返回
}

返回值可以让调用方知道函数执行的结果有哪些问题,建议函数都加返回值,哪怕返回值没有用到。

int func(){…}
double func(){…}等 int max(int x, int y) {
return (x>y)?x:y;
}

C语言讲义——函数的更多相关文章

  1. C语言讲义——函数递归

    函数直接或间接调用自身 每次调用必须获得一些进展,进一步靠近目标 达到目标就不再调用自身 阅读递归函数不要纠缠于执行过程,而是相信递归函数会顺利完成任务 例:阶乘 0! =1(0 的阶乘定为1) 1! ...

  2. C语言pow函数编写

    C语言pow函数编写 #include<stdio.h> double chaoba(double f,double q); //声明自定义函数 void main(void) { dou ...

  3. C语言-自定义函数

    C语言自定义函数 --1-- 自定义函数定义 1.1 无参无返回值函数 1.2 无参有返回值函数 1.3 有参无返回值函数 1.4 有参有返回值函数 --2-- 函数的参数 2.1 形式参数介绍和使用 ...

  4. C语言printf()函数:格式化输出函数

    C语言printf()函数:格式化输出函数 头文件:#include <stdio.h> printf()函数是最常用的格式化输出函数,其原型为:     int printf( char ...

  5. C语言的函数

    "函数"在英文的翻译是"function",无论在自然科学还是计算机科学都是这个词,而"function"的本意是"功能" ...

  6. c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)

    C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...

  7. Go语言示例-函数返回多个值

    Go语言中函数可以返回多个值,这和其它编程语言有很大的不同.对于有其它语言编程经验的人来说,最大的障碍不是学习这个特性,而是很难想到去使用这个特性. 简单如交换两个数值的例子: package mai ...

  8. 【学习笔记】【C语言】函数

    一. 什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”.所以,你可以说C语言程序是由函数构成的. 比如你用C语言编写了一 ...

  9. 【转载】 c语言inline函数的使用

    c语言inline函数的使用 转载自:http://blog.chinaunix.net/uid-21843265-id-3056446.html 大学在教科书上学习过inline函数,定义为inli ...

随机推荐

  1. ViewModel和LiveData问题思考与解答

    嗨,大家好,面试真题系列又来了,今天我们说说MVVM架构里的两大组件:ViewModel和LiveData. 还是老样子,提出问题,做出解答. ViewModel 是什么? ViewModel 为什么 ...

  2. 蒲公英 · JELLY技术周刊 Vol.28: Next.js 10 发布

    蒲公英 · JELLY技术周刊 Vol.28 前端应用到底该选 SSR 还是 CSR?每个项目技术栈决策的时候都会根据实际需求有自己的看法,而在不久前 React 17 发布之后,自然而然也会有同学好 ...

  3. think PHP5.1使用时 session重定向丢失问题

    查了很多资料,也看了redirect底层代码,具体来说,还是多个用的地方不太对.做个笔记防忘记: 遇重定向后丢失session时: 1.php.ini配置文件,不要自动启动,默认是0,session. ...

  4. P1526 [NOI2003]智破连环阵

    目录 题意描述 算法分析 闲话 初步分析 具体思路 剪枝一 剪枝二 剪枝三 总结一下 代码实现 预处理 剪枝一 剪枝二 剪枝三 二分图匹配 代码综合 结语 又是被楼教主虐的体无完肤的一天 题意描述 在 ...

  5. [POJ 2821]TN's Kindom III(任意长度循环卷积的Bluestein算法)

    [POJ 2821]TN's Kindom III(任意长度循环卷积的Bluestein算法) 题面 给出两个长度为\(n\)的序列\(B,C\),已知\(A\)和\(B\)的循环卷积为\(C\),求 ...

  6. unix进程间通信方式(IPC)

    unix进程间通信方式(IPC) 管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信. 命名管道(named pipe):命名管道克服了管道没有 ...

  7. leetcode144add-two-numbers

    题目描述 给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是十位数...),求这个两个数的和,结果也用链表表示. 输入:(2 -> 4 -> ...

  8. css移动端适配 1px边框的解决方案

    .border{ width: 100px; height: 100px; position: relative; } //加上媒体查询更严谨一些 dpr为2的设配才进行缩放,dpr为1的设备边框就是 ...

  9. 像用excel一样用pandas

    1 说明 预计需要15min阅读此教材: 本教材仅讲述如何查看excel数据,筛选,排序,查找替换数据,不涉及excel中复杂的图形绘制及样式修改. 2 假设 假设,已经存在一个test.xlsx文件 ...

  10. 【故障公告】Memcached 的“惹祸”,不知在为谁背锅

    在 .NET 5.0 背锅 . Memcached 的惹祸 .缓存雪崩之后,我们没有找到问题的真正原因,我们知道没有找到根源的故障总是会再次光临的,不是在这周就是在下周,也许就在双11前后. 就在今天 ...