在下面的代碼中,我希望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