以下输出什么,说明原因
#include<iostream>
#include<queue>
#include<stdio.h>
#include<algorithm>
using namespace std;
void why()
{
printf("hello");
exit(0);
}
typedef void (*p)();
void fun(int a)
{
int b=(int)why;
printf("world");
}
int main()
{
fun(1);
}
这道题把why的地址强制转换成int, 然后就直接输出了
答案是world
假如我们想把hello输出应该怎么呢,用函数指针就可了,我们只要把b强制转换成一个函数指针就可
#include<iostream>
#include<queue>
#include<stdio.h>
#include<algorithm>
using namespace std;
void why()
{
printf("hello");
exit(0);
}
typedef void (*p)();
void fun(int a)
{
int b=(int)why;
p pp;
*(int *)&pp=b;
(*pp)();
printf("world");
}
int main()
{
fun(1);
}