明示的な定義のない関数

私はC ++を学んでいます。 ポインターで手をたたくと、彼にとって興味深い例が出てきました。 彼はおそらく経験のある人には興味がないでしょうが、とにかく危険を冒します。

typedef int (*pf)( int , int );

char c[] = {85,-119,-27,-117,69,12,3,69,8,93,-61,-112};

pf sum = (pf)c; //reinterpret_cast .

cout << sum(2,3); // 5.




* This source code was highlighted with Source Code Highlighter .




現在、sumはこれに類似した加算関数です。

int sum(int a, int b){return a+b;}







私が思いつくことができる唯一の便利なアプリケーションは、そのような幽霊の危険を恐れることです。



UPD ileyに提案したように 、これは一般的にCを指します。



UPD 1行:

cout << ((int (*)(int, int))"\x55\x89\xE5\x8B\x45\x0C\x03\x45\x08\x5D\xC3")(2,3)





思考については0lympian 、修正についてはhalyavinに感謝します



All Articles