C语言函数总结及四种类型辨析

一:标准库函数

需要包含对应的头文件。

二:自定义函数:函数的声明,定义和调用,参数的传递。

1.函数的声明:

1)如果主调函数在被调函数之前,则需要对其进行函数声明。声明部分可以写在主函数的任何位置,尽量写在主函数之前。

一般形式:类型标识符  函数名(类型  形参名1  ,   类型   形参名2,……);

注意:1.形参用逗号隔开。

           2.末尾要加分号。

2)如果主调函数在被调函数之后,则不需要对其进行函数声明。

2.函数的定义:

一般形式类型标识符  函数名(类型  形参1,类型  形参2,……);

                 {

                      函数体

                  }

类型标识符:指定函数返回值的类型。

return语句:一般形式:1)return 表达式 ;

                                       2)return (表达式);

                                       3)return;

                    注意:如果直接使用return;或者直接省略,则说明该函数无返回值。

                               无返回值的函数:函数类型标识符用“void”。

                               int a(void)  表示函数没有形参

形参:函数括号内的参数,当定义有参函数时,形参的值由实参提供。当定义无参函数时,则没有形参,函数后面括号中加入‘void’或者空着。

3.函数的调用:

有参函数的调用:函数名(实参1,实参2,……);

无参函数的调用:函数名();

注意:1)调用时实参与形参的个数,类型和顺序应一致。若类型不一致,将实参值的类型转换为形参值。(自己写代码使其一致,避免出错)

           2)若函数类型与return之后表达式的类型不同,函数类型决定返回值的类型。

返回值为1。

           3)实参可以是常量,变量或者表达式。形参只能是变量。

           4)无参函数不能在表达式中调用,也不能作为另一个函数的参数,只能以语句的形式调用。

4.参数的传递:

1)值传递:实参值复制给形参。(传值)

2)引用传递:把实参的储存地址传递到形参中去。(传址)

注意:值传递只能是单向传递,形参值不能传给实参。

三:变量的作用域和变量的储存类别

1.变量的作用域(这块我感觉还是比较简单的部分)

1)局部变量:函数内部定义。

2)全局变量:函数外部定义。

注意:1)局部变量定义时未初始化取随机值,全局变量定义时未初始化,赋值为0。

           2)同一源文件,允许全局变量和局部变量同名。此时在局部变量的作用域内,局部变量有效。

           3)在全局变量之前的函数中或其他文件的函数中引用该局部变量,使用extern声明。

          4)全局变量的定义在所有函数之外,且只能定义一次。

2.变量的储存类别(重要)

根据其生存期分为静态存储方式和动态存储方式。

四种类型:自动变量(auto),静态变量(static),外部变量(extern),寄存器变量(register)。

1.自动变量(auto):属于动态存储方式。未加存储类别声明的变量均视为自动变量(可省去auto)。

                     生存期结束时自动变量的值会丢失。不被初始化,其值不定

2.静态变量(static):局部变量的值在函数调用结束后仍保存在内存中,在下次调用函数时,变量的值就是上次函数调用后的值。

分为静态局部变量静态全局变量:说明前加上static关键字即可。

注意:1)静态局部变量定义时没有被初始化自动赋值为0。

           2)局部变量改为静态变量:改变了变量的生存期。

                 全局变量改为静态变量:改变了变量的作用域。

3.外部变量(extern):等同于全局变量。如果在该变量定义之前的函数中或者其他文件中想使用该全局变量,需要使用关键字extern进行声明。

4寄存器变量(register):储存在CPU中,读取速度更快。

寄存器变量的注意事项:

1)寄存器变量为动态存储方式,只有局部自动变量和形参可定义为寄存器变量。一般只将整型和字符型定义为寄存器变量

2)不能定义多个寄存器变量。

3)使用完寄存器变量应尽快释放,提高寄存器的利用效率

4)不能对其进行取地址运算。

四:辨析四种类型:1.有参数有返回值。2.有参数无返回值。3.无参数有返回值。4.无参数无返回值。

下面我用一个很简单的的例子来区别这四种类型:比较a和b的大小。

1.有参数有返回值

2.有参数无返回值

无返回值被调函数只能被整体调用,不能作为表达式的一部分。

3.无参数有返回值

4.无参数无返回值

我刚看这一部分,确实是毫无头绪,重在理解,多看几次,感觉也不是很难理解。

以上是我对函数知识点的理解,可能有错误的地方,多多包涵,请指出错误我会及时更正。

  • 42
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值