传入参数为void * 形式时为何需要在指针前加&

图片说明
图片说明

state本身即为指针,为何调用的时候还要加&?

&不是修饰state的是修饰后面的数组元素的

void *可以传任意的指针,这里lcu_order[i]是一个指针,但是调用的时候需要传的是这个指针的指针。所以还要 &。
打一个比方,参照系统库函数qsort的最后一个参数cmp,传入一个函数指针,作为比较器,对数组排序。
那么这个函数的原型是int cmp(const void *, const void *)
如果你比较的是一般的数组,那么void *是一般的指针。
如果你比较的是指针构成的数组,那么void *就是数组的数组了。

就是单纯的取地址,传参