最近、リンクされたリストを試しているときに問題に遭遇しました。関数を使用して、データ フィールドに文字列を持つ新しいノードをリンクすると、機能しません。つまり、関数 (linkin() 以下を参照) が を返すと、文字列 (関数に対してローカル) が破棄され、文字列フィールドが初期化されていないように見えます。
ただし、 int でこれとまったく同じ操作を行うと、問題なく動作するようです。私が使用したコードは以下のとおりです (int バージョンですが、他のバージョンを表示するには、int の代わりに val を文字列にします)。誰かが私に何が起こっているのか説明してもらえますか?
ありがとう!
struct testlist {
int val;
testlist *next;
};
void linkin ( testlist *a );
int main() {
testlist test;
linkin(&test);
cout << test.next->val <<endl;
}
void linkin ( testlist *a )
{
testlist b;
b.val=1;
a->next = &b;
cout << a->next->val <<endl;
}