我正处于学习C语言的初始阶段。关于包含void指针的声明,我有一个疑问。
void (*myvar)(const struct foo *);
任何人都可以帮我解决上述问题。上面一行的确切含义是什么,以及如何在代码中使用此指针。
答案 0 :(得分:6)
在你的问题中,
void (*myvar)(const struct charpp *);
按照说明
是一个函数指针,而不是简单的pointer -to -struct
。您可以找到有关此here的更多信息。
另外,请仔细检查this答案,了解使用情况。
注意:char
是c中的保留关键字[datatype]。它不能用作变量名,就像你在代码中使用的那样。改变别的东西。
答案 1 :(得分:2)
应该变量是指向函数的指针的变量声明,该函数以const char *
为参数而不返回任何值。我说应该,因为你在参数类型的声明中有一个错误(没有const struct char *
这样的东西。)
如果您修正了错误,并假设您的意思是const char *
,那么您可以像下面的代码一样使用它:
#include <stdio.h>
void my_print_line(const char *str)
{
printf("%s\n", str);
}
int main(void)
{
void (*myvar)(const char *);
myvar = &my_print_line;
myvar("Hello world!");
}
答案 2 :(得分:2)
它是一个指向函数的指针。如果您遵循Spiral Rule,则可以轻松破解和理解规则。看看Example2。现在你可以轻松地将你的声明代替示例并逐个分解,以便更好地理解。
+--------------------+
| +---+ |
| |+-+| |
| |^ || |
char *(*fp)( int, float *);
^ ^ ^ || |
| | +--+| |
| +-----+ |
+------------------------+
此外,struct char
会产生错误。