这是代码:

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的指针。对于函数指针也是一样的:Tchar*,并且*var必须用括号分隔,因为C不知道空格。C只是添加了一点额外的语法来指定指针指向函数的参数类型和数量。这只是C工作方式的一部分。

关于c - C函数指针困惑,什么是“变量的指针级别”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9457108/

10-11 23:03
查看更多