我是stackoverflow的新手,所以我提前为我犯的任何错误道歉。
我最近遇到了这个 C 难题。该程序如下所示。
#include<stdio.h>
void change()
{
}
int main()
{
printf("\nHello");
change();
printf("\nHai");
printf("\nHow are you?");
return 0;
}
预期的输出是,
Hello
Hai
How are you?
问题要求我们通过在函数 change() 中添加一些代码来更改输出如下
Hello
How are you?
您不应该在 main() 中进行任何更改。
我试图通过避免语句 printf("\nHai") 来更改存储在堆栈内存中的函数 change() 的返回地址。但是当我使用 gcc 编译时出现错误。
我在 change() 中添加的代码如下所示。
void change()
{
char ch;
*(&ch+10)+=20;
}
添加到 ch (10 和 20) 的值通过使用固定
objdump -d ./a.out
我希望收到一些解决问题的建议。提前感谢您的时间和耐心。