Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 指向void函数的指针_C_Initialization_Function Pointers_Declaration - Fatal编程技术网

C 指向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函数的指针的正确方法是什么

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;