在函数需要将数组作为参数传入时,数组是传址调用,即将数组作为实参时,传入的其实是数组的首地址,实质上是一个指针。
在定义函数时可以定义一个指针,然后去调用数组,此时在函数内部的操作会直接修改数组的实际对应元素。因为传输进函数的数组的本质就是数组的首元素地址,函数内部按照地址去修改当然相当于直接操作数组。
在需要一个函数返回数据时也可以用定义指针,然后传入数组,将需要传回的数据放进数组内,在函数结束调用后,去相应的数组内取回数据。
但是需要注意的是,数组传入函数时只有当传入的是一个数组名时才是传址调用,如果给定下标的话就是一个标量,例如定义一个数组int num[20]。当传入num[0]、num[1]或其他下标时,传入的就是一个标量,而非一个传址调用了,此时如果有需要依然传入地址,例如想将数据放入数组,但是想从第二个元素位开始,就需要加一个取址符 “&” ,即&num[2],此时会将num[2]的地址传入,在写入数据时,也会从num[2],开始。
注意:如果定义一个数组,元素只有一个下标,即类似于int num_ine[1],此时直接传入函数,也是标量传入,而非传址调用。
在需要将数组传入函数,但是不想数组被改变时,可以使用const 关键字修饰,即函数形参定义为int const num[],此时数组num会被声明为常量,即不可改变。