从C出发 20 --- 函数参数深度剖析

函数的参数在定义时无值,其值在调用时通过实参指定。形参在被实参初始化后成为函数内部的变量。数组作为参数时,传递的是数组本身而非副本,导致对数组形参的修改会影响实参。函数调用中,实参初始化形参,类似于变量初始化,但数组参数的行为不同于常规变量,是按引用传递。
摘要由CSDN通过智能技术生成

我们在编写这个函数的时候参数 n 的值具体是多少?

在编写一个函数的时候参数值是没法确定的,所以将 (int n) 这个参数命名为形参

那么这个参数的值什么时候指定,具体函数调用的时候指定

比如 在main 里面调用

实参用来初始化形参

初始化之后形参就有意义了

当形参被初始化之后,就变成了变量,换句话说函数参数的本质是变量


 

总结: 函数定义的时候参数是没有值的,那么参数的值什么时候指定,函数调用的时候指定,怎么指定,初始化的方式指定,用什么初始化,用实参来初始化形参,初始化了之后形参就等同于函数内部的变量了

 

 在 int j = test(i);   在这里以i 作为实参来调用test ,那么test 内部又修改了参数,为什么 i  不受影响?

如果理解了初始化的定义,这个问题就迎刃而解了,这个地方是将 i 的值拿出来, i 的值是3,那么拿出来之后放到 n 里面,这样的话,那么上面的 i ,和下面的 n ,拥有的值是一样的都是3,i 是上面的变量,n是下面函数的变量,仅仅是值相同而已,除此之外没有任何关系,所以在函数内部修改了n,i 不会受影响,函数调用的时候,实参和形参所发生的事情,就是初始化而已,和普通变量初始化所发生的事情是一样的,没有任何本质的不同


 

数组是可以作为一个实参来调用一个函数的

如果函数的形参是一个数组,那么调用的时候就必须用同类型的数组作为实参

 

 实验证明 : 2个数组参数的关键点

1.数组参数的大小被忽略了

2.修改数组形参等价于修改数组实参,换句话说,数组形参被真正的传到了函数的内部,并不是将值传到函数内部,和变量的情况是完全不一样的

变量作为参数的情况完全就是值传递,数组参数情况完全不同,对于数组参数来说,是将数组本身传递到了函数内部


大小信息写不写,就无所谓了

 

第一个参数就是要处理的数组本身,第二个参数就是数组的大小 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长生君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值