gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:06:26 26 4
gpt4 key购买 nike

我需要将一个结构成员(例如下面的示例中的“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)

关于c - 将结构成员传递给 C 中同一结构中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com