想请问个C语言语法 (*((void(*)(void))0x1900))() RT,请问高手帮忙具体分析下这句话,不胜感激。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将0x1900作为一个函数指针(函数原形为void foo()),然后调用之。假设存在这么一个0x1900的函数入口地址。 本帖最后由 caozhy 于 2012-06-30 18:54:17 编辑 额,感谢4,5楼的回答,我明白这句话的用途,但具体的不太明白能具体说下两个void的用途么非常感谢 前面的 void 表示无返回值,后面表示无参数void foo(void){ printf("Hello World!\n");} 简单的说相当于c#里的委托。代码改了一下。你看看。// err.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"void foo(){ printf("Hello World!\n");}void * fooadd=&foo;int _tmain(int argc, _TCHAR* argv[]){ int pfn = (int)&foo; printf("%d\r\n", pfn); (*(void(*)(void))pfn)(); /* 等价 foo(); */ printf("fooadd=%d\r\n",fooadd); (*(void(*)(void))4264186)(); /* 等价 foo(); */ getchar(); return 0;} void * fooadd=&foo;是取函数在dll中的地址。(*(void(*)(void))4264186)();这样都是相当于调用那个函数。 讨论项目中字节长度限制等问题 跪求JAVASCRIPT高手帮助,为什么getElementById不能取得QQ空间"发表"按钮的ID? c# foreach循环 可访问性不一致的问题 C#中如何比较日期问题? 求救:线程停不下来了 类似QQ日志中标题栏的那些功能是怎么实现的,比如加粗,倾斜等等 重载问题,大家帮帮啊! 请问graphics.DrawString("dd",....);写在Form_Load()中就执行,而写在OnPaint中才能执行,这是为什么呢? C#中这样引入activex控件啊? 十进制浮点形式输出 关闭程序时释放串口连接
额,感谢4,5楼的回答,我明白这句话的用途,但具体的不太明白能具体说下两个void的用途么非常感谢
void foo(void)
{
printf("Hello World!\n");
}
代码改了一下。你看看。// err.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"void foo()
{
printf("Hello World!\n");
}void * fooadd=&foo;int _tmain(int argc, _TCHAR* argv[])
{
int pfn = (int)&foo;
printf("%d\r\n", pfn); (*(void(*)(void))pfn)(); /* 等价 foo(); */
printf("fooadd=%d\r\n",fooadd);
(*(void(*)(void))4264186)(); /* 等价 foo(); */
getchar();
return 0;
}
(*(void(*)(void))4264186)();这样都是相当于调用那个函数。