C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了也许是函数指针或转换问题.不确定大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这段代码中发生了什么?
我没有得到这个代码.看起来它正在执行某种类型的转换或使用函数指针,但我不确定.如果有人能帮助我,我将不胜感激.谢谢.

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类型和声明.

大佬总结

以上是大佬教程为你收集整理的也许是函数指针或转换问题.不确定全部内容,希望文章能够帮你解决也许是函数指针或转换问题.不确定所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。