pus*_*hpa 0 c pointers function operator-precedence
假设我有\nvoid (*ptr[3])(int) \n并且\nvoid (*ptr)[3](int)
第一个按预期工作。\n但第二个抛出错误。
\n我尝试了这两种方法,但无法找出问题所在。\n错误内容如下:
\n\n\n“..错误:将 \xe2\x80\x98ptr\xe2\x80\x99 声明为函数数组 void\n(*ptr)3;”
\n
void (*ptr)[3](int)ptr与声明为函数数组的指针相同,这是不允许的。你不能有函数数组。
typedef void(functype)(int);
functype ptr[3]; // error
Run Code Online (Sandbox Code Playgroud)
您需要的很可能是一个函数指针数组,这就是您的工作声明void (*ptr[3])(int)创建的。
typedef void(functype)(int);
functype* ptr[3];
// ^
Run Code Online (Sandbox Code Playgroud)
使用示例:
void a(int x) {}
void b(int x) {}
void c(int x) {}
int main(void) {
typedef void(functype)(int);
functype* ptr[3] = {a,b,c};
}
Run Code Online (Sandbox Code Playgroud)