> 文章列表 > 从C出发 20 --- 函数参数深度剖析

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

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

我们在编写这个函数的时候参数 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.修改数组形参等价于修改数组实参,换句话说,数组形参被真正的传到了函数的内部,并不是将值传到函数内部,和变量的情况是完全不一样的

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


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

 

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