【发布时间】:2019-05-04 13:53:32
【问题描述】:
出于好奇,我试图了解指向函数的指针在 C 中是如何工作的。
为了将函数与 typedef 关联,我在其中声明了一个指针,然后将所需函数的地址存储在其中。
这是我能够实现的:
typedef struct
{
void (*get)(char*, int);
char string[10];
} password;
int main()
{
password userPassword;
userPassword.get = &hiddenStringInput;
userPassword.get(userPassword.string, 10);
return EXIT_SUCCESS;
}
虽然这实际上工作得很好,但我希望“userPassword.get”成为一个快捷方式,在使用时调用 hiddenStringInput 函数并填写请求的参数(在这种情况下,一个字符数组和一个整数) .
基本上,由于我总是将 userPassword.get 与参数“userPassword.string”和“10”一起使用,因此我试图找出一种方法以某种方式将这些参数存储在指向的指针中到 hiddenString 函数。有可能吗?
【问题讨论】:
-
如果您迁移到 C++,您可以使用 lambda 函数或函数对象来实现这一点。毫无疑问,C 有技巧,但这超出了我的工资等级。
-
There's been a soft push to integrate this into C for some time,但该功能尚未以标准化的一流方式存在。它可能会包含在 C2x(下一个标准修订版)中如果比只有 Clang 支持它的编译器更多。我正在努力。
-
如果我理解正确的话,你基本上想要成员函数。这就是(一个原因)为什么会有 C++。
标签: c