繁体   English   中英

指向结构的空指针

[英]Void pointer to a struct

我正处于学习C语言的初期。 我对包含空指针的声明有疑问。

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

任何人都可以帮我有关上述内容。 上一行的确切含义是什么,以及如何在代码中使用此指针。

在你的问题上

void (*myvar)(const struct charpp *); 请注意

是一个函数指针,而不是简单的pointer -to -struct 您可以在此处找到有关此的更多信息。

另外,请检查答案以清楚了解用法。

注意: char是c中的保留关键字[datatype]。 正如您在代码中所使用的那样,它不能用作变量名。 换点别的。

应该是一个以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!");
}

它是函数的指针。 如果遵循“ 螺旋规则”,则可以轻松打破和理解规则 看一下Example2。 现在,您可以轻松地将声明而不是示例放到一边,并进行部分分解以更好地理解。

             +--------------------+
             | +---+              |
             | |+-+|              |
             | |^ ||              |
        char *(*fp)( int, float *);
         ^   ^ ^  ||              |
         |   | +--+|              |
         |   +-----+              |
         +------------------------+

同样, struct char将生成一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM