以下のコードでは、f() が戻った後に tmp 文字配列が破棄されることを期待しているため、x はまったく出力されません。
ただし、以下の関数 x では main() で出力されますが、for ループは正しいものを出力しません。誰かがこの動作を説明できますか? これが出力です。
abcdefg a b c d e f g abcdefg ?
k Y i
#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;
}