如果想把一个数组名参数传递给函数,正确的函数形参应该是怎样的?它是应该声明为一个指针还是一个数组?
调用函数时实际传递的是一个指针,所以函数的形参实际上是一个指针,但为了使程序员新手更容易上手一些,编译器也接受数组形式的函数形参。因此,下面这两个函数原型是相等的:
举例结构体:
结构体作为函数参数
结构体指针作为函数参数
我们知道数组作为函数参数的使用方法,那结构体数组本质上也是数组,所以结构体数组作为函数参数的使用方法应该与数组作为函数参数的方法一样。同时我们也知道,下标引用与间接访问完全相同 。下图中函数访问结构体数组是使用下标引用的方式。

下图是传参另一种方式,同样也是使用下标引用方式:

即然下标引用与间接访问相同,那间接访问应该如何实现?见下图:

上图中第 18 行也可以这样写,(* ( cmd+i ) ).name。由于 " * "取值运算符优先级小于 " . "成员选择运算符,所以需要将 *cmd 用括号括起来。
另外,void print_info() 函数的第一个参数也可以这样写 ” str_cmd cmd[] “。就是和数组是一样的。变来变去,取自己喜欢的一种即可。
还有一种写法,如下图:

这种写法实际处理函数只针对某一个结构体(传进来的那个结构体)操作。
针对不同的应用场景,选择传递合适的参数。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2669.html