は、このように迅速かつできるだけ簡潔にするには、これは私のコードです:char配列の内容を変更することはできますか?
char* aiMove = getAIMove();
cout << aiMove;
cout << "\n" << numMoves << ": " << aiMove << "\n\n";
return aiMove;
そして、これは私の出力です:
a0 a1
0: �����������������������7
だから、最初の行はgetAIMoveを()呼び出しと戻りを割り当てvalue(char *)をaiMoveに設定します。
2行目はaiMove(a0 a1)を出力します。
3行目はnumMovesとaiMoveをcoutに取り出して印刷しますが、代わりに奇妙な値が表示されます。
第4行目はaiMoveを返します。これは異常な値が出力されたことを検査しました。
aiMoveの値が変更されたのはなぜですか?これは、整数値をcout(この場合はnumMoves)に渡す場合にのみ発生するようです。
助けてください! おかげで、 パトリック:)
編集:私は言及を忘れてしまった別のものは、それが印刷し、プログラム中に実行されますすべての次の時間、このコードブロックを最初に実行されますと、この奇妙な行動が唯一起こるということです良い。
getAIMove()はchar * getAIMove(){char str [] = "Patrick"です。 return str; } ???もしそうなら、ローカル変数へのポインタを返すのは間違いです。 – Jagannath
あなたはgetAIMove()のコードを提供できますか?割り当てられたローカルスタックを返しますか? –
@ Jagannathあなたが正しいです、getAIMove()は最終的にchar str []を返します。ありがとう:)私はまだcoutに整数値を渡すことで違いが生じるのは分かりませんが、S –