*(int*)&p ----这是什么?
来源:互联网 发布:万得数据库多少钱 编辑:程序博客网 时间:2024/04/29 20:24
*(int*)&p ----这是什么?
例:
void Function()
{
printf("Call Function!\n");
}
int main()
{
void (*p)();
*(int*)&p=(int)Function;
(*p) ();
return 0;
}
解析:
(1)void (*p)();//定义了一个指针变量p,p 指向一个函数,这个函数的参数和返回值都是void。
(2)*(int*)&p=(int)Function;
&p 是求指针变量p 本身的地址。
(int*)&p 表示将地址强制转换成指向int 类型数据的指针。
(int)Function 表示将函数的入口地址强制转换成int 类型的数据。
那么*(int*)&p=(int)Function;表示将函数的入口地址赋值给指针变量p。
(3)(*p) (); 表示对函数的调用。
例:
void Function()
{
printf("Call Function!\n");
}
int main()
{
void (*p)();
*(int*)&p=(int)Function;
(*p) ();
return 0;
}
解析:
(1)void (*p)();//定义了一个指针变量p,p 指向一个函数,这个函数的参数和返回值都是void。
(2)*(int*)&p=(int)Function;
&p 是求指针变量p 本身的地址。
(int*)&p 表示将地址强制转换成指向int 类型数据的指针。
(int)Function 表示将函数的入口地址强制转换成int 类型的数据。
那么*(int*)&p=(int)Function;表示将函数的入口地址赋值给指针变量p。
(3)(*p) (); 表示对函数的调用。
阅读全文
0 0
- *(int*)&p ----这是什么?
- int *p[4]; int p[4]; int **p; int *(p[4]); int (*p)[4]这5种的区别与联系
- int **p 、int (*p)() 、 int (*p)[5] 和int (**p)()
- int **p
- int(*p)[]和int(**p)[]
- int *p[]与int (*p)[]
- int(*p)[]和int(**p)[]
- int *p[] 与 int (*p)[]
- int *p=new int; int *p=new int[10]; int *p=new int(10);这三个有什么区别
- const int *p,const * int p,int const *p
- const int * p,int const * p,int * const p
- 详解const int *p,int*const p,int const *p
- 详解const int *p,int*const p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- const int *p,const * int p,int const *p
- easyUI的datagrid每行数据添加操作按钮的方法
- JAVA EE
- 上课演示的文字
- Ble Connection Events(转载)
- 我要开始了
- *(int*)&p ----这是什么?
- 设计一个类不能被继承
- MFC中MessageBox函数用法详解
- Java实现-合并区间
- Bootstrap定义操作列
- Educational Codeforces Round 23 题解
- 【转】oralce11g卸载
- C++搜索算法和曼哈顿距离之最少连通代价
- HDU 2476 区间DP