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. OpenVAS虚拟机安装

    官方网站:http://www.openvas.org/ 参考链接:http://www.openvas.org/vm.html 下载地址:http://dl.greenbone.net/downlo ...

  2. postman测试实例--断言

    postman测试实例--断言 让我们来看看postman测试的一些例子. 其中大部分是作为内部postman片段. 大多数测试是为单行的JavaScript语句一样简单. 只要你想一个请求,你可以有 ...

  3. github下载报错:Permission denied (publickey). fatal: Could not read from remote repository.

    Permission denied (publickey). fatal: Could not read from remote repository. 博主在github上下载tiny face的的 ...

  4. [tyvj-1061]Mobile Service 动态规划

    滚动数组优化一波. 原设计状态:表示三个员工分别的位置和执行到的任务. 考虑到:执行完第i个任务,一定有员工在pos[i],那么就可以压一维,空间复杂度就算不滚动数组也可以了. (喜闻乐见,今天第一次 ...

  5. OOP 面向对象 七大原则 (二)

    OOP 面向对象   七大原则 (二) 上一篇写到了前四个原则,这一篇继续~~ 接口隔离:客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口上. 又是一句大白话~就是说接口尽量 ...

  6. PHP做的简单计算器

    使用php做的简易计算器 能够进行+,-,*,/运算. 如下图 <?php if (isset($_POST['button'])) { $num1 = $_POST['num1']; $num ...

  7. 【codeforces 805B】3-palindrome

    [题目链接]:http://codeforces.com/contest/805/problem/B [题意] 让你生成一个只包含a,b,c的字符串; 要求c出现的次数最少,且任意一个 长度为3的子串 ...

  8. ARP(地址解析协议)

    目录 1. ARP 概述 2. ARP 协议工作原理 3. ARP 缓存 4. ARP 报文格式 5. 抓包分析 5.1. ARP 请求报文 5.2. ARP 应答报文 6. 免费 ARP 7. AR ...

  9. SQL优化的思路及基本原则(mysql)

    SQL优化的思路:  1.优化更需要优化的sql:  2.定位优化对象的性能瓶颈:优化前需了解查询的瓶颈是IO还是CPU,可通过PROFILING很容易定位查询的瓶颈.  3.明确优化目标:  4.从 ...

  10. 石子合并(区间dp)

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程仅仅能每次将相邻 ...