首页 > 07、C语言——函数

07、C语言——函数

函数

1、函数定义

    函数返回值类型 函数名(形式参数列表)

     {

        函数体;

     }

    注意:

      定义有参函数时,形参的定义可以采用传统方式或现代方式两种

      1)传统方式:

        int max(x,y)

        int x,y;不能定义形参以外的其它变量

        {}

      2)现代方式: 

        int max(intx,inty)

        {}



2、函数返回值类型

    形式1:

      int fun(int x, int y)

      {

        return 表达式;

      }

    注意:返回的值是给调用函数整体的形式,表达式是先计算后返回值

    形式2:

      void fun (int x)

      {

        一定不要加return语句;

      }

    注意:void没有预留存放返回值的空间

3、函数调用

    3个一致:个数、类型、位置

    方式1:非void型

    变量名=函数名(实参列表);



    方式2:void型

    函数名(实参列表);



4、函数原型声明

    形式1:函数类型 函数名(形参类型1 形参1,形参类型2 形参2...);

    形式2:函数类型 函数名(形参类型1 ,形参类型2...);



5、变量三属性

    变量三属性:类型——定义、作用范围——空间、存储类别——时间

    1)类型

      类型名 变量名列表;

    2)作用范围—— 局部变量和全局变量

      A、局部变量(或称内部变量)

        定义:在一个函数内部定义的变量

          a、局部变量只能在它所在的函数内有效

          b、在不同的函数中可以出现同名的变量,它们分别属于不同的变量

          c、复合语句中定义的变量只能在此复合语句中有效

          d、所有形式参数都是局部变量



       
B、全局变量(或称外部变量)

        定义:在函数外部定义的变量

          a、全局变量的有效范围是在本文件内从定义该变量的位置开始到本文件的结束

          b、 全局变量可以在它的有效范围内被每个函数引用

          c、在同一文件中若全局变量与局部变量同名,局部变量“屏蔽”全局变量



   
 3)存储类别格式:

      A、auto类别变量(可以省略)

        定义同时说明类别:

          (存储类别) 类型名 变量名

           a、auto类别变量用完后释放所占用空间

           b、局部变量默认为,无初始化时,初值为随机值auto类别

           c、使用时间短,一般都为auto类别变量





     
 B、static类别变量

        定义同时说明类别:

          存储类别 类型名 变量名

           a、static类别从定义到程序运行结束均占用存储空间

           b、全局变量默认为static类别,无初始化时,初值为0

           c、static类别变量只进行一次初始化



      
C、register类别变量

        定义同时说明类别:

          存储类别 类型名 变量名

            a、register类别只能是局部变量才能被说明

            b、一般不能直接使用



       
D、extern类别变量

          格式1:定义同时说明类别:

            存储类别 类型名 变量名;



          格式2:分别定义、说明

            类型名 变量名;

            存储类别 变量名;

              a、extern类别变量可以加大变量的作用范围

              b、两种说明格式



6、预编译命令

      预编译命令

      文件包含(include)

      #include<>——在指定的目录下库文件的搜索

      #include""——在指定标准的搜索路径下,在当前的工作目录或者子目录下进行搜索



7、宏

    第一种:无参宏定义

        格式:

          #define 宏名 宏内容

        功能:用一个指定的标识符(宏名)来代表一串字符(宏内容)

        注意:

          1)宏名我们一般用大写字母表示,遵守用户自定义标识符命名规则

          2)#define可以在函数外定义也可以在函数内定义,但该命令应该在单独一行上

            #undef命令可以提亲终止宏名的作用域

          3)在进行宏定义时,可以引用已经定义的宏名进行层层置换

          4)在进行宏替换时,必须先替换完所有的宏名再运算,同时体化过程中不能乱加括号

            原模原样替换然后按着优先级别计算,不要乱加括号

    第二种:带参宏定义

        格式:

           #define 宏名(参数列表)宏内容

        功能:提供了一种更加灵活的替换方式

        注意:

          1)在定义有参宏时,参数列表必须用一对小括号括起且小括号和宏名之间不能有空格

          2)对有参宏名进行替换时,需要将形参改成相应的实参,并且之一分清形参和实参的对应关系

8、小知识汇总 

    1)一个源程序文件可由一个或多个函数组成

       函数是C语言的基本单位

       main()函数由操作系统OS来调用的

       main()函数可以调用其他子函数,子函数可以调用其他子函数,子函数也可以自己调用自己

     2)一个C语言程序可以由一个或多个源程序文件组成

     3)C程序执行总是从main()开始,结束于main()结束;可调用其它函数

     4)函数不能嵌套定义,但可以互相调用,不能调用main()函数的分类

        嵌套定义:在一个函数中不能自己再定义一个函数

      5)类型区别

        原型声明——此时有函数返回值类型标识,有函数名,有参数类型,有分号

        调用函数——有函数名,有参数

        定义调用函数——有函数返回值类型标识,有函数名,有参数类型,无分号

      6)三大口诀

        口诀1:表达式—看其合法性,有短路优先考虑(与、或),挑运算符先计算运算级别高,同级情况下考虑结合性

        口诀2:找配对,找控制,标语句

        口诀3:遇到return或者}返回到被函数调用处

 

转载于:https://www.cnblogs.com/wxt19941024/p/6939565.html

更多相关:

  • 多线程编程 mind-Mapping保存有一下导图的xmind文件,可直接获取 互斥变量 互斥对象 ptrhead相关接口 条件变量 future异步访问类 async类 promise类 package_task类...

  • 我们在实际开发的过程中,可能需要某些类的成员变量并不是针对每一个对象的,而是针对每一个类而言的,比如在银行中有一个利率数据,我们希望的是,当一个利率改变的时候,所有的对象都能够看到这个改变的数据,并利用它,而不是每一个对象都有一个利率成员变量。这个时候就设计到了静态成员变量。 一. 内存那些事 静态成员变量是存放在静态...

  • volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触...

  •   引子     阅读以下代码,并尝试分析 代码解析 在主线程中,线程Id为1,为线程变量赋值 变量==d6ff开启一个新的task,此时线程Id为4,变量==d6ff,并调用Task1开启一个同步Task3,线程Id为1。变量==d6ff,修改值==f598此时第二步启动的Task1运行,线程Id为4,变量==d6ff,修改值=...

  • 操作系统基础    操作系统是协调、控制、管理计算机硬件资源与软件资源的控制程序 为什么要用操作系统?    1.操作系统可以把复杂的操作简化给用户使用或者应用程序  2.可以让应用程序对计算机硬件竞争变的有序  一套完整的计算机分为:操作系统、应用程序、计算机硬件 编程语言的分类   机械语言:使用二进制让计算机工作   优点:运行...

  • 草色新雨中, 松声晚窗里。之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作。虽然 PowerQuery 已经将大部分常用功能内置成到功能区。基本能完成我们大部分的报表自动化功能。但是总有些复杂的或者个性化的问题是开发团队没有预先想到的,这时我们就需要学习 M 语言。一、M 语言在哪里?M语言的函数公式有三个地...

  • 前言从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。基本概念表达式表...

  • 1.1函数1.1.1什么是函数函数就是程序实现模块化的基本单元,一般实现某一功能的集合。函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态。1.1.2函数的作用函数是组织好的,可重复使用的,用来...

  • 原标题:基于Python建立深度神经网络!你学会了嘛?图1 神经网络构造的例子(符号说明:上标[l]表示与第l层;上标(i)表示第i个例子;下标i表示矢量第i项)单层神经网络图2 单层神经网络示例神经元模型是先计算一个线性函数(z=Wx+b),接着再计算一个激活函数。一般来说,神经元模型的输出值是a=g(Wx+b),其中g是激活函数(...

  • 在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重。小编刚开始学习的时候也会有这个感觉。不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个。今天小编就把常用的函数汇总一下,为大家能够能好的学习MySQL中的函数。MySQL常使用的函数大概有四类。时间函数、数学函数、字符函数、控制函数。让我...

  • 这里将分享我使用PCL库的遇到的一些坑,以及总结的技巧,当然也需要各位能够多多分享,将公众号的文章或者知识星球的文章转发到朋友圈。 pcl_common中主要是包含了PCL库常用的公共数据结构和方法,比如PointCloud的类和许多用于表示点,曲面,法向量,特征描述等点的类型,用于计算距离,均值以及协方差,角度转换以及几何变化的函...

  • C++中extern是指全局的意思。它一般有两个方面的用途: 1、声明变量 首先说一下声明和定义的区别: ①变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。 ②变量的声明:用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern...

  • 在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A {     int i;     B b; } class B {     int i;     A* a; } 请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即...

  •   前天在玩OLED时想完成一直想弄得一个东西,就是简单的单片机游戏。因为STM32和nRF51822的内存足够,所以就用缓存数组的方法来显示图像(我也不知道术语是啥,反正就是在内存中建立一个128X64的二维数组,更新显示时将整个数组刷新到屏幕上),而且这两个OLED是串口的(还有一个128X32的OLED,一样串口的,连驱动时序和...

  • 三、继承中容易引起的错误有时候继承也会带来些错误,比如说下面这条css定义: body{color:blue} 在有些浏览器中这句定义会使除表格之外的文本变成蓝色。从技术上来说,这是不正确的,但是它确实存在。所以我们经常需要借助于某些技巧,比如将css定义成这样: body,table,th,td{color:blue} 这样表格...