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

将结构成员传递给C中同一结构中的函数指针,c,struct,function-pointers,C,Struct,Function Pointers,我需要将一个结构成员(如以下示例中的“str”)作为参数传递给同一结构(如“(ToUpper)”)中的函数指针,或者换句话说,我需要访问“ToUpper”函数中的“str”值 typedef struct _String { char* str; char* (*ToUpper) (void); } String; 我可以这样做吗?因为C中没有这个指针,所以在使用结构中的函数指针时,必须传递对正在操作的任何对象的引用 typed

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

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

我可以这样做吗?

因为C中没有
这个
指针,所以在使用结构中的函数指针时,必须传递对正在操作的任何对象的引用

typedef struct _String {
    char* str;
    char* (*ToUpper)( struct _String );
} String;
然后你应该有一个“初始化”函数,如下所示

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

String newString(char* str) {
    return (String) { str, ToUpper };
}
第二个方法将为您提供一个新的字符串结构,其中设置了所有函数指针,以便您可以使用它

可以这样称呼:

someString.ToUpper(someString)

C不支持OOP。指针不是可以“传递”某些内容的活动实体。请注意,永远不要使用以下划线和大写开头的标识符、包含双下划线的标识符以及(在全局范围内)以下划线开头的标识符。所有这些都是为标准库的实现保留的。