将结构成员传递给C中同一结构中的函数指针
我需要将一个结构成员(如以下示例中的“str”)作为参数传递给同一结构(如“(ToUpper)”)中的函数指针,或者换句话说,我需要访问“ToUpper”函数中的“str”值将结构成员传递给C中同一结构中的函数指针,c,struct,function-pointers,C,Struct,Function Pointers,我需要将一个结构成员(如以下示例中的“str”)作为参数传递给同一结构(如“(ToUpper)”)中的函数指针,或者换句话说,我需要访问“ToUpper”函数中的“str”值 typedef struct _String { char* str; char* (*ToUpper) (void); } String; 我可以这样做吗?因为C中没有这个指针,所以在使用结构中的函数指针时,必须传递对正在操作的任何对象的引用 typed
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。指针不是可以“传递”某些内容的活动实体。请注意,永远不要使用以下划线和大写开头的标识符、包含双下划线的标识符以及(在全局范围内)以下划线开头的标识符。所有这些都是为标准库的实现保留的。