一道笔试题。。求答案
给一个函数:
void fun(void)
{
}
int main()
{
int x = 1;
int y = 2;
fun();
printf("x,y%d %d\n",x,y);
}
问,如何实现函数fun,使得最后的打印结果不是1 2
[解决办法]
// 这个算不算?!
#include <stdlib.h>
#include <stdio.h>
void fun(void)
{
int x = 10, y = 20;
printf("x,y%d %d\n",x,y);
exit(0);
}
int main()
{
int x = 1;
int y = 2;
fun();
printf("x,y%d %d\n",x,y);
}
#include <iostream>
using namespace std;
void func()
{
int a[1] = {0};
*(int*)((char*)&a[0] + 0xec) = 100;
*(int*)((char*)&a[0] + 0xe0) = 200;
}
int main()
{
int x = 1;
int y = 2;
func();
cout << "x = " << x << endl;
cout << "y = " << y << endl;
system("pause");
return 0;
}
#include <stdio.h>遍历下就可以吧
#pragma pack(push)
int fun(void)
{
int a=0;
int *p;
p=&a;
while(*p!=1)
{
p++;
}
*p=10;
}
int main()
{
int x=1;
int y=2;
fun();
printf("%d %d\n",x,y);
}
#pragma pack(pop)
int fun(void)
{
#define printf
}
准确点说void fun(void)
{
int a=0;
int *p=&a;
while(1)
{
if((*p==1)&&(*(p-1)==2)) break;
p++;
}
*p=88; //x的地址
*(p-1)=99; //y的地址
}
怎么可以确定p++一定能取到x的地址?局部变量有没有可能按照地址从小到大的顺序存储?