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

时间:2016-01-11 15:12:21

标签: c struct function-pointers

我需要在下面的例子中将一个结构成员(例如“str”)作为参数传递给同一结构中的函数指针,例如“(ToUpper)”,或者我需要访问“str”的值的另一个单词“在”ToUpper“功能中。

{{1}}

我可以这样做吗?

1 个答案:

答案 0 :(得分:0)

由于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)