C 指向void函数的指针
声明指向void函数的指针的正确方法是什么C 指向void函数的指针,c,initialization,function-pointers,declaration,C,Initialization,Function Pointers,Declaration,声明指向void函数的指针的正确方法是什么 void reverseArray(int arraySize, int a[]){ } 我的许多尝试中的一个,我认为有点正确 void (*reversePtr)(int, int) = &reverseArray; 函数指针的第二个参数的类型无效。函数声明为 void reverseArray(int arraySize, int a[]); 然后,指向函数的指针将如下所示 void ( *reversePtr )( int, int
void reverseArray(int arraySize, int a[]){
}
我的许多尝试中的一个,我认为有点正确
void (*reversePtr)(int, int) = &reverseArray;
函数指针的第二个参数的类型无效。函数声明为
void reverseArray(int arraySize, int a[]);
然后,指向函数的指针将如下所示
void ( *reversePtr )( int, int[] ) = reverseArray;
或者
void ( *reversePtr )( int, int * ) = reverseArray;
考虑到不需要在初始值设定项表达式中使用运算符地址,如&reversearlay
。只写reversearlay
就足够了,因为表达式中使用的函数指示符被转换为指向其类型的指针
例如,你甚至可以写作
void ( *reversePtr )( int, int * ) = *****reverseArray;
或
您看到的错误是什么?除了第二个参数类型外,它几乎是正确的。请参见此处:@EugeneSh。警告:从不兼容的指针类型“void()(int,int*)”初始化“void()(int,int*)”,不确定它的含义,但这是我一直得到的结果。这恰恰意味着参数的类型不匹配。我个人更喜欢第二种指针表示法,尤其是对于新C程序员的答案,因为它强化了传递的是指针,而不是数组本身
void ( *reversePtr )( int, int * ) = *&*&*&*&*&reverseArray;