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

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

别名:子例程(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. CodeForces 916D Jamie and To-do List

    题意 你需要维护一个任务列表,有 \(q\) 次操作,每次操作形如以下四种: set a x:设置任务 \(a\) 的优先级为 \(x\),如果任务列表中没有 \(a\) 则加进来. remove a ...

  2. 详解git rebase,让你走上git大神之路

    在之前的文章当中我们介绍了git merge的用法,明白了通过git merge我们可以合并两个分支的改动.这样我们就可以很方便地进行协同开发了,每个人都在自己的分支下开发代码,开发完毕之后再一起合并 ...

  3. [Luogu P2827] 蚯蚓 (巧妙的模拟)

    题面: 传送门:https://www.luogu.org/problemnew/show/P2827 Solution 看到这题,我们肯定会有一个大胆想法. 那就是直接用堆模拟这个过程. 对于q,我 ...

  4. 浅谈 Tarjan 算法

    目录 简述 作用 Tarjan 算法 原理 出场人物 图示 代码实现 例题 例题一 例题二 例题三 例题四 例题五 总结 简述 对于初学 Tarjan 的你来说,肯定和我一开始学 Tarjan 一样无 ...

  5. 正式班D23

    2020.11.05星期四 正式班D23 目录 12.3.3 HUP信号 12.3.3 HUP信号 在关闭终端时,终端会收到Linux HUP信号(hangup信号),关闭其所有子进程. 想让进程一直 ...

  6. 第 2 篇:上手 Vue 展示 todo 列表

    作者:HelloGitHub-追梦人物 追梦人物的 Vue 系列教程在他的博客已经全部更新完成,地址: https://www.zmrenwu.com/courses/vue2x-todo-tutor ...

  7. Typora设置Vue主题

    平时看视频,发现好多老师使用 Typora 时,界面跟我的不一样,好看一些,后来查了下才知道老师使用了Vue主题,接下来我就记录下设置Vue主题的步骤吧 一.下载Vue主题 地址:http://the ...

  8. SpringCloud之Gateway

    一.为什么选择SpringCloud Gateway而不是Zuul? Gateway和Zuul的职责一样,都承担着请求分发,类似Nginx分发到后端服务器. 1.SpingCloud Gateway ...

  9. HTTPDNS开源 Android SDK,赋能更多开发者参与共建

    为赋能更多开发者参与共建,阿里云HTTPDNS开源 Android SDK,iOS SDK也在做开源准备,不久也将开放给开发者.HTTPDNS是阿里云移动研发平台面向多端应用(移动端APP,PC客户端 ...

  10. 关于情感分类(Sentiment Classification)的文献整理

    最近对NLP中情感分类子方向的研究有些兴趣,在此整理下个人阅读的笔记(持续更新中): 1. Thumbs up? Sentiment classification using machine lear ...