简单题目,大家帮忙看下!该如何处理
简单题目,大家帮忙看下!
#include <stdio.h>
void test()
{
int t;
scanf( "%d ",&t);
// 请在以下添加代码,使main函数中的变量m输出值等test函数中的变量t;
}
main()
{
int m;
test();
printf( "m=%d ",m);
}
------解决方案--------------------
大概的意思是了解调用规范,然后通过栈去实现对m的修改吧,通过t的位置,能够推导出来m在栈中的位置,然后用指针指向该位置,
int *ptr = &t;
ptr += ? 或者 ptr -= ?;
*ptr = t;
------解决方案--------------------
#include <stdio.h>
#include <iostream>
using namespace std;
void test()
{
int t;
scanf( "%d ",&t);
throw t;
}
int main()
{
int m;
try
{
test();
}
catch(int a)
{
m = a;
printf( "m=%d ",m);
}
system( "pause ");
return 0;
}
lz是在考我们吧
------解决方案--------------------
void test()
{
int t;
scanf( "%d ",&t);
*(&t+56)=t;
//memcpy((&t+56),&t,4); //这样也可以
}
int _tmain(int argc, _TCHAR* argv[])
{
int m=0;
test();
printf( "m=%d\n ",m);
return 0;
}
======================
有点不符合楼主的题意,但是,因为vc解析问题,没有初值的东西怎么都会报错,所以还是先初始化一下
#include <stdio.h>
void test()
{
int t;
scanf( "%d ",&t);
// 请在以下添加代码,使main函数中的变量m输出值等test函数中的变量t;
}
main()
{
int m;
test();
printf( "m=%d ",m);
}
------解决方案--------------------
大概的意思是了解调用规范,然后通过栈去实现对m的修改吧,通过t的位置,能够推导出来m在栈中的位置,然后用指针指向该位置,
int *ptr = &t;
ptr += ? 或者 ptr -= ?;
*ptr = t;
------解决方案--------------------
#include <stdio.h>
#include <iostream>
using namespace std;
void test()
{
int t;
scanf( "%d ",&t);
throw t;
}
int main()
{
int m;
try
{
test();
}
catch(int a)
{
m = a;
printf( "m=%d ",m);
}
system( "pause ");
return 0;
}
lz是在考我们吧
------解决方案--------------------
void test()
{
int t;
scanf( "%d ",&t);
*(&t+56)=t;
//memcpy((&t+56),&t,4); //这样也可以
}
int _tmain(int argc, _TCHAR* argv[])
{
int m=0;
test();
printf( "m=%d\n ",m);
return 0;
}
======================
有点不符合楼主的题意,但是,因为vc解析问题,没有初值的东西怎么都会报错,所以还是先初始化一下