C语言-函数-010

本文详细介绍了函数的语法、语义、声明、调用方法,包括不同调用形式、参数传递、返回值、栈与内存区域、函数嵌套与递归,以及作用域的概念、类别、可见性规则和限定符如static、auto和extern的应用。
摘要由CSDN通过智能技术生成

1.函数

1.1语法

1.2语义 

1.3函数声明

1.4函数调用

函数调用的三种形式:

(1)函数调用语句:

(2)函数调用在表达式中或者作为表达式的一部分:

(3)函数作为主调函数的参数:

1.5函数的参数 

        函数的实参和形参分别储存在不同的地址中,形参的改变并不会改变实参中的数值。形参调用的是相应的地址中的数据,而不能调用实参地址中的数据。

        函数调用时,用数组名作为函数的参数,实参将其地址传递给形参,等同实现了参数之间的双向值的传递。

1.6函数的返回值 

1.7函数调用的本质:

        栈 :

        堆:

        全局区(静态区):

        字符串常量区:

        代码区:

1.8函数的嵌套调用:

1.8.1递归

(1)函数嵌套调用的特殊形式:自己调用自己。

(2)递归的要点:

                a.递推关系

                b.结束条件

(3)源码示例:

1.8.2

2.作用域

2.1概念

作用域:标识符的作用范围。

2.2作用域类别

块作用域:在一个【{}】范围内

文件作用域:不在任何一个【{}】范围内

2.3标识符的可见性

(1)可见性:程序运行到某个点,那些标识符可见。

(2)可见性的规则:

                1.先定义,后使用

                2.同一作用域中,不能有同名表示符

                3.在不同的作用域,同名标识符相互之间没有影响

                4.不同的作用域之间存在者嵌套关系:内层作用域的同名标识符,会屏蔽外层的作用域的同名标识符(就近原则)。

(3)时间上去区分:
                   动态变量(局部变量-空间是开辟在栈上的--自动申请自动释放) 

2.4限定符

(1)【static】

                static:表示存储在静态区,修饰局部变量

                1.不能用变量进行初始化,只能常量初始化

                 2.静态区的变量:只会被初始化一次

                 3.值具有继承性

static修饰局部变量:将局部变量 存储在了 全局区(静态区),将局部变量的生命周期延长 
static修饰全局变量:表示 将全局变量 的作用域限定到本文件中,别的文件中不能extern了 

static加在函数前面:此时效果与修饰全局变量效果一样:将函数作用域限定到本文件中

(2)【auto】

                1.【auto】:表示该变量是一个自动变量,栈上开辟的变量

                2.【register】:CPU寄存器变量,不能取地址,建议性

(3)【extern】:

                1.扩展 延伸 
                 2.表示 此时这个a 不是在当前文件中定义的 ,
                 3.如果要用,请到别的文件中寻找
                 4.多文件编程 
                 5.一般使用在多文件编程中:
                 6.如果想在当前文件使用别的文件中的 全局变量 ,
                 7.此时,可以使用
                 8.extern int a; //做声明 
                 9.相当于,把别的文件中的变量作用域扩展到当前文件

  extern可以放在函数声明中--函数声明:表示的意思 --将函数作用域扩展到当前文件
     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值