Void指向结构的指针

时间:2014-12-05 10:29:03

标签: c pointers struct function-pointers

我正处于学习C语言的初始阶段。关于包含void指针的声明,我有一个疑问。

void (*myvar)(const struct foo *);

任何人都可以帮我解决上述问题。上面一行的确切含义是什么,以及如何在代码中使用此指针。

3 个答案:

答案 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会产生错误。