C语言函数

 

目录

函数开始

函数的语法形式

        返回类型:

传参:

形参,实参       

return

函数作为数组参数

单个文件的声明和定义

多个文件函数的声明和定义

 如何生成静态库

使用静态库

static

        作用域

     生命周期

static修饰局部变量   

static修饰全局变量 

static修饰函数

使用建议

extern

内存分区        

            


当实参传递给形参的时候,形参是有自己的内存地址的,形参是实参的一份临时拷贝,对形参修改不会影响实参。

还有个就是定义函数类型这儿,能不能用int 来定义,我觉得其实应该是不行,如果返回值应该是返回两个值,int 应该放不下,所以用的void来定义,需要交换值的话应该用上在函数里用上指针,这样就能把交换的值直接传到实参的地址里。 

_____________________________________________________________________________

以上内容为指针函数的内容

函数开始

函数的概念

        C语言中的函数就是一个完成某项特定的人物的一段代码。

        C语言的程序其实是有无数个小的函数组合而成的,也可以说:一个大的计算任务可以分解成若干较小的函数(对应较小的任务)完成。

每一次使用库函数都要包含相应的头文件。

函数的语法形式

        函数返回类型+函数名+(形式参数)。大括号里是函数体(需要自己设计),构成函数

        返回类型:

                函数返回接受的值的类型,一些函数需要返回值就需要给返回值定义一个类型,不需要返回值类型为“void”。

传参:

        传的什么类型的参数,就需要在函数括号里定义相同类型的参数来接受。

形参,实参       

        只有在传递实参的时候,形参才会向内存申请空间,没有传参的话就不会提出申请。

形参和实参的地址不一样。

函数返回的值是暂时放在寄存器里的,回到主函数时接受返回值。

寄存器是集成在CPU上的,没有地址,内存才有地址。

形参只能在函数内部使用,除了函数就回收了。出了函数空间就没了。

return

        return 后面可以是数值也可以是表达式,如果是表达式则先执行表达式,再返回表达式的结果。

        在函数里return后面可以不写,反空值用void接受,也可以不写return。

        return 返回后函数结束,如果后面还有代码则不执行。

        如果返回的值,与接收类型不一样,则会强制转换为返回类型(函数名前面的类型)。

        如果函数里面有if和分支,则要保证每种情况都有return返回,否则就会出错。

函数作为数组参数

        主函数里的数组传参时,直接传数组名(多维数组和指针那儿会有点区别)就行。

        接受时也用类型+数组接收。

  1.         函数的形式参数要和函数的实参个数匹配
  2.         函数的实参是数组时,形参也是可以写成数组形式的(估计还有其他办法)
  3.         形参如果是一维数组,数组的大小可以省略不写
  4.         形参如果是二维数组,行可以省略,但是列不能神略
  5.         数组传参,形参是不会创建新的数组的
  6.         形参操作的数组和实参的数组时同一个

函数里面不能再定义一个其他的函数。

单个文件的声明和定义

        函数的申明直接把函数名抄一遍末尾加分号。

多个文件函数的声明和定义

        在头文件.h里面放:函数的声明和类型的声明。

        源文件里放函数的定义。

使用时:#include"( 头文件名 ).h",里面有函数的声明,把函数写在另一个.c文件里,主函数里调用就行。

 如何生成静态库

        右击文件名称(解决方案管理器的顶上),打开之后点击——属性(在最下面)——常规里面的配置类型——里面有静态库——然后生成解决方案——后缀名是   .lib  。

使用静态库

        #pragma comment(lib, "add.lib")

static

        作用域

                        哪里能使用哪里就是作用域

                        局部变量的作用域是变量所在的局部范围

                        全局变量的作用域是整个工程(多个文件应该也行)

     生命周期

                局部变量在出了生命周期就会销毁把申请的空间还回去。

                全局变量只有程序运行结束才会销毁。

static修饰局部变量   

                出了生命周期不销毁 。   

static修饰全局变量 

       只能在本文件内使用, 失去了外部链接属性(其他源文件不得使用)。

static修饰函数

        也只能在本文件使用,失去了外部链接属性。

使用建议

        在变量出了函数之后,我们还想保留值,就可以用static修饰     

多个文件编译时,每个源文件都是单独编译的,

extern

        声明外部符号。

在声明函数时,记得带上参数。

内存分区        

        栈区:存放局部变量和函数的参数。

        堆区:动态内存分配。malloc , calloc , realloc , free.

        静态区:全局变量和静态变量(程序不结束变量不销毁),只有程序结束,变量才会销毁,内存才会回收,但是作用域不变

            

  • 50
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值