1、什么是函数

  2、函数语法

  3、函数声明

  4、函数调用

  5、函数的形参与实参

  6、return与exit关键字

  7、递归函数

1、什么是函数

  • 函数就是一连串语句被组合在一起,并指定了一个名字

  • 函数这个术语来自数学,但不完全等同于数学

–函数不一定有参数
–函数不一定要计算数值

  • 函数是C语言的构建块

2、函数语法

  • 函数在使用步骤分为三个步骤:声明、定义、调用。

  • 语法格式

返回值类型 函数名(参数){

  ...(函数体)(返回值);

}

  

3、函数声明

  • 正常来讲,函数在使用前一定要声明

  • 由于编译器从上到下,所以下面的代码调用上面的函数,不 需要声明,但上面的代码调用下面的函数,就必须声明

  • 声明的格式,去掉函数体部分,保留 返回值类型 函数名(参 数);(函数的原型)

  • 如果返回值类型不是int的话,最好使用函数声明(函数原型)。

  • void f();

   函数声明,可以省略参数,省略参数代表可以接受任意参数,如 果不需要参数,使用void关键字。void f(void);

  

4、函数调用

  • 需要写出函数名及其后的实际参数列表

  • 实际参数用来给函数提供信息

  • 实际参数不一定是变量,任何正确类型的表达式都可以

  

5、函数的形参与实参

  • 函数的形参是在定义时使用的参数

int fa(int x) {

  return x * x + 2 * x + 4;

}

  • 函数的实参是调用此函数时需要传入的参数

int main() {

  int result = fa(10);//x = 10;

  return 0;

}

  

6、return与exit关键字

  • 调用函数时,需要函数的执行结果,这时就需要返回值类 型标识结果的类型,函数体内部需要使用return关键字,标识具体的函数结果(返回值)。

  • 如果函数执行后,不需要结果,就定义函数的返回值类型 void(空),也就不需要return关键字。

  • exit(0)是一个函数,用于退出整个程序 需要包含一个 stdlib.h

  • return 可以做为返回值的关键字,终止当前函数的继续执 行。

  

7、递归函数

  • 递归算法

–递归的过程,一般通过函数或子函数实现

–递归方法:在函数或子函数内部,直接或间接调用自己的算法。

  • 递归工作原理

  递归有可能造成死循环或算法的复杂化。(运行次数变多)。因 此使用递归时,必须注意:

-必须有退出条件
-必须保存递归后,算法简化

  • 递归格式

int f1(int n) {
  printf("f1(int n) %d\n",n);

  if (n==1) {

    return 1;

  }

  return n*f1(n-1);

}

C语言基本语法——函数的更多相关文章

  1. C语言基础语法之指向函数的指针

    指针是C语言的精髓,对于初学者来讲,指针是C语言语法学习中比较难的知识点,而这里面指向函数的指针更是不太容易理解. 下面给大家讲下怎样学习理解C语言中指向函数的指针及编程方法和使用例子. 注意:这是一 ...

  2. C语言 第八章 函数、指针与宏

    一.函数 函数是一个包含完成一定功能的执行代码段.我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的.外部程序 ...

  3. 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...

  4. (转)PHP的语言结构和函数的区别

    相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等. 例子: if ( isset($user) ) { //do some thi ...

  5. 函数指针玩得不熟,就不要自称为C语言高手(函数指针是解耦对象关系的最佳利器,还有signal)

    记得刚开始工作时,一位高手告诉我说,longjmp和setjmp玩得不熟,就不要自称为C语言高手.当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法.后 ...

  6. php入门 数据类型 运算符 语言结构语句 函数 类与面向对象

    php PHP-enabled web pages are treated just like regular HTML pages and you can create and edit them ...

  7. 初识 go 语言:语法

    目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...

  8. go语言基本语法

    一个例子总结go语言基本语法  demo.go   package main   import (     "fmt" )   //结构体 type PersonD struct ...

  9. Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...

随机推荐

  1. HDU 4704 Sum( 费马小定理 + 快速幂 )

    链接:传送门 题意:求 N 的拆分数 思路: 吐嘈:求一个数 N 的拆分方案数,但是这个拆分方案十分 cd ,例如:4 = 4 , 4 = 1 + 3 , 4 = 3 + 1 , 4 = 2 + 2 ...

  2. [luogu3726 HNOI2017] 抛硬币 (拓展lucas)

    传送门 数学真的太优秀了Orz 数据真的太优秀了Orz 题目描述 小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍.最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习.但是已经入坑了几个月, ...

  3. RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第二篇【原理】

    http://blog.csdn.net/deadgrape/article/details/50574459 接着上一篇,我们开始聊聊APPIUM的框架和运行模式.废话不多说直接上图. 1.首先自动 ...

  4. 教你十分钟构建好 SpringBoot + SSM 框架

    目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐.而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了 ...

  5. python:单引号,双引号和三引号

    python中字符串可以用单引号括起来,也可以用双引号,这两种方式是等价的需要表示一个字符串对象的话,单引号和双引号没有区别 为什么需要单引号和双引号同时支持,而一般都是”呢? 比如” 双引号’里面有 ...

  6. [Angular] Service Worker Version Management

    If our PWA application has a new version including some fixes and new features. By default, when you ...

  7. DAC0832、led、蜂鸣器

    52控制DAC0832芯片输出电流,让发光二极管D12由灭均匀变到最亮.再有亮变灭.在最亮和最灭的时候蜂鸣器发出报警声,完毕整个周期的时间是控制在5s左右. #include<reg52.h&g ...

  8. Effective JavaScript Item 22 使用arguments来创建接受可变參数列表的函数

    本系列作为Effective JavaScript的读书笔记. 在Item 21中,介绍了结合apply方法实现的可变參数列表函数average,它实际上仅仅声明了一个数组作为參数,可是利用apply ...

  9. POJ 2796 / UVA 1619 Feel Good 扫描法

    Feel Good   Description Bill is developing a new mathematical theory for human emotions. His recent ...

  10. 道里云SDN云网络技术:使云能够“众筹”

     容器云来了! 容器云的网络规模将比虚拟机云的情况扩大10-100倍,容器云与虚拟机云互联需求也将使云网络管控复杂度成数倍增长.SDN业界迎来了空前挑战.本报告分享道里云公司SDN技术:怎样将云的 ...