在下面的代码中,我希望tmp字符数组在f()返回后被销毁,因此x根本不应该被打印。函数返回后字符数组未被破坏
但是,在下面的函数x获得打印在main()但for循环不打印正确的东西。有人可以解释这种行为。这是输出。
ABCDEFG 一个 b Ç d Ë ˚F 克 ABCDEFG ?
ķ Ÿ 我
#include <iostream>
using namespace std;
char* x;
void f()
{
char tmp[100]= "abcdefg";
x = tmp;
cout << x << endl;
for(int i=0; i < 7; i++)
cout << x[i] << endl;
}
int main()
{
f();
cout << x << endl;
for(int i=0; i < 7; i++)
cout << x[i] << endl;
}
定义“破坏”。 tmp在堆栈上创建。如果您在调用f()之后调用另一个方法,可能会覆盖tmp,否则编译器没有理由重写堆栈来整理事情。但是,你正在做的事情被认为是危险的。 – Pete 2013-02-15 15:22:40
请选择C或C++。 – 2013-02-15 15:23:02
什么是“我是”? – banuj 2013-02-15 15:23:56