我知道这是重复的。我已经搜索过,但没有解决我遇到的问题。 注意在试图单出我的困惑我试图从原来简化类型转换。但愿它不是不确定的行为输入函数指针
声明一个指向函数
Int (*funcPtr)(void*,void*);
STRCMP声明
int strcmp (char *, char *);
类型转换函数指针
FuncPtr = (int (*)(void*, void*))strcmp
这是我弄糊涂。我明白我们已经创建了一个函数指针。因此,类型铸造FuncPtr例如,只是改变什么类型的功能funcPtr可以指向。我也看到,一个函数的名字是一个函数指针到自身,铸字STRCMP,并使用从上面我的理解,
int (*)(void*, void*))strcmp
STRCMP现在可以指向需要两个指针作废的功能并返回一个int,它显然是错误的,就像数组我认为函数名称不能是指向另一个函数的指针。
因为我的理解上面我看不出你可以用下面的类型转换
FuncPtr = (int (*)(void*, void*))strcmp
STRCMP的地址分配给FuncPtr作为改变什么函数指针STRCMP点没有按不会改变参数和返回类型strcmp。
我真的很感谢一些知识,我只是很困惑。
嗯,只是因为你可以,并不意味着这是个好主意。如果需要,我可以将我的车开到树上,但是...... – ThingyWotsit
任何函数指针都可以指向任何函数,但不允许通过指针调用该函数,除非指向的类型与函数完全匹配指向 –
“我认为函数名不能是另一个函数的指针”Eh?你什么意思?什么是'FuncPtr',什么类型?请注意,C语言区分大小写。 – Lundin