C语言【函数】#2

函数传值

函数传值传递的只是实参的值,相当于拷贝了实参的值传递给形参变量,想当于赋值操作,无法实现被调函数对主调函数中数据的修改。

一维数组作为函数参数

情况1.数组元素作为函数参数

形式上,保持一致,被调函数中就可以访问到主调函数中数组的数据

一维整型数组作为函数参数
形参 写成数组的形式 同时需要一个接受数组长度的形参
实参 传数组名,传数组长度

为什么要传len(数组长度) --为数组开辟多大空间做准备   fun(int*a[ ])本质上是指针 此时a在64位占了8个字节;
数组的下标运算 本质上是一个指针运算

函数参数分为: 形参变量 实际参数  
注意: 数组元素的类型是否与形参类型一致

形参和实参规则
1.个数相同
2.类型匹配
3.一一对应


情况2.想把整个数组传入到函数中

数组名能代表整个数组    //给实参时,给定数组名

void printArray(int a[],int len);

形式上:
形参1 表示要传的是数组这种数据 
形参2 要传的是数组的长度 

本质上:

void printArray(int* a,int len);

指针变量 (接收地址这种数据)

因为传的是数组名,而数组名是数组首元素的地址,所以相当于将数组空间的地址传给了被调函数,而被调函数,通过数组下标运算,可直接访问到主调函数对应数组空间的数据。
所以,数组传参的这种方式,可以实现被调函数修改主调函数中的数据。

             

注意:

 1.如果函数传的是数组,通过数组下标的访问方式,可以实现被调函数,修改主调函数中的数据

二维数组作为函数参数

形参
1.写一个二维数组的形式(行数可以省略,列数不能省略)
2.需要传递行数
实参
1.传数组名
2.传二维数组行数

二维字符型数组作为函数参数,语法与二维整型数组类

标识符的作用域与可见性问题

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

局部作用域--{}内的都是局部作用域   全局作用域--不在任何一个{}范围内

可见性: 程序运行到某句代码时,那些标识符是可见的(可起作用的)

标识符可见性的规则

1.先定义,后使用
2.同一作用域中,不能有同名标识符//重复定义
3.在不同作用域,同名标识符,相互之间没有影响
4.如果是不同作用域中,但是作用域之间存在嵌套关系,则内层的作用域的同名标识符,会屏蔽外层的作用域的同名标识符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值