繁体   English   中英

将结构成员传递给C中相同结构中的函数指针

[英]Pass struct member to function pointer in same struct in C

在下面的示例中,我需要传递一个结构成员(例如“ str”)作为同一结构(例如“(ToUpper)”)中函数指针的参数,或者换句话说,我需要在内部访问“ str”的值“ ToUpper”功能。

typedef struct _String {
            char* str;
            char* (*ToUpper) (void);
         } String;

我可以这样吗?

由于C语言中没有this指针,因此在结构体中使用函数指针时,您必须传递对要处理的任何对象的引用...

typedef struct _String {
    char* str;
    char* (*ToUpper)( struct _String );
} String;

然后,您应该有一个像这样的“初始化”功能。

char* ToUpper( struct _String s ) {
   // ...
}

String newString(char* str) {
    return (String) { str, ToUpper };
}

那里的第二种方法将为您提供一个新的String结构,并设置所有函数指针,以便您可以使用它。

这样称呼它:

someString.ToUpper(someString)

暂无
暂无

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

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