visual C++,这段代码说明了什么

visual C++, What does this code says?

本文关键字:代码 说明了 什么 C++ 段代码 visual      更新时间:2023-10-16

我是一个delphi的家伙,在这里喝得酩酊大醉,试图弄清楚这个C++代码是什么,但不知道。。乙醇

char sc[] = "x31.....";

int main(int argc, char **argv)
{
    int (*f)();
    f = (int (*)())sc;
    (int)(*f)();
}

"sc"是字符

让我们一次走一行:

int (*f)();

这声明了一个名为f的变量,该变量是指向不带参数并返回int的函数的指针。

f = (int (*)())sc;

这里带括号的部分是类型int (*)(),指向不带参数并返回int的函数的指针的类型。这是一个类型转换,将sc大小写为该类型的函数,然后将其分配给f。由于sc似乎是一个char数组,这意味着"将数组sc中的字节视为不带参数并返回int的函数的代码。"这将导致C++规范中未定义的行为,根据您的系统,该函数可能会工作,也可能因包含代码的页面上未设置执行位而崩溃。

(int)(*f)();

这是不必要的复杂。CCD_ 11是表达式CCD_ 12的类型转换。这里,(*f)f所指向的函数,()调用它。因此,这意味着"调用f所指向的功能,然后将结果强制转换为int。"当然,f已经返回了int,所以强制转换没有意义。正如我上面提到的,这会导致未定义的行为。

希望这能有所帮助!

相关文章: