也许是函数指针或转换问题.不确定
发布时间:2020-12-16 09:29:19 所属栏目:百科 来源:网络整理
导读:这段代码中发生了什么? 我没有得到这个代码.看起来它正在执行某种类型的转换或使用函数指针,但我不确定.如果有人能帮助我,我将不胜感激.谢谢. const char string[]="Hello!";int main() { (*(void (*)()) string)(); //Obviously,my problem is this line :
这段代码中发生了什么?
我没有得到这个代码.看起来它正在执行某种类型的转换或使用函数指针,但我不确定.如果有人能帮助我,我将不胜感激.谢谢. const char string[]="Hello!"; int main() { (*(void (*)()) string)(); //Obviously,my problem is this line :) return 0; } 解决方法
首先,让我们使用
cdecl来解释内在的胡言乱语:
$cdecl cdecl> explain (void (*)()) cast unknown_name into pointer to function returning void 所以(void(*)())string将字符串转换为函数指针.然后取消引用函数指针以调用底层函数.这条线相当于 void (*fp)() = (*(void (*)()) string)(); (*fp)(); 这(在大多数机器上)尝试执行“Hello!”作为机器代码.它可能会在具有虚拟内存的计算机上彻底崩溃,因为数据通常标记为不可执行.如果它没有崩溃,它就不可能做任何连贯的事情.无论如何,这不是有用的代码. 这里唯一要学习的是cdecl工具可以用于理解或编写复杂的C类型和声明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |