这是代码:
char *(*strcpy_ptr)(char *dst, const char *src); Pointer to strcpy-like function
tutorial表示:
注意上面声明中*strcpy_ptr周围的括号。
它们将指示返回类型(char*)的星号与
星号表示变量的指针级别(*strcpy_ptr-
一级,指向函数的指针)。
我搞不懂这一点——函数指针在哪里,“指针级别”是什么?
最佳答案
您正在声明一个变量strcpy_ptr
。您希望此变量是指向返回char*
的函数的指针。如果你这样做没有括号:
char **strcpy_ptr(char *dst, const char *src);
它将是返回
char**
的函数的原型,而不是您想要的。括号是将一个星与变量分组,并将星与返回类型分开。请记住,指针的声明方式如下:
T *var;
其中
T
是某种类型。你添加的星越多,在最终到达实际的T
之前,你添加的间接级别就越多。所以char **c
将是指向char
的指针。对于函数指针也是一样的:T
是char*
,并且*var
必须用括号分隔,因为C不知道空格。C只是添加了一点额外的语法来指定指针指向函数的参数类型和数量。这只是C工作方式的一部分。关于c - C函数指针困惑,什么是“变量的指针级别”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9457108/