为了节省您的时间和简洁越好,这是我的代码:cout可以更改char数组的内容吗?
char* aiMove = getAIMove();
cout << aiMove;
cout << "\n" << numMoves << ": " << aiMove << "\n\n";
return aiMove;
这是我的输出:
a0 a1
0: �����������������������7
所以,第一行调用getAIMove()并分配收益值(char *)到aiMove。
第二行输出aiMove(a0 a1)。
第三行将numMoves和aiMove放入cout并打印出来,但是它却打印出一些奇怪的值。
第4行返回aiMove,我检查过它是打印的奇怪值。
为什么aiMove的值发生了变化?它似乎只发生在我将一个整数值传入cout(在这种情况下,numMoves)。
请帮忙! 谢谢, 帕特里克:)
编辑:我忘了提另外一件事是,当这段代码被首次执行这种奇怪的行为只发生时,它会在程序运行过程中的每一次之后它打印精细。
and getAIMove()is char * getAIMove(){char str [] =“Patrick”;返回str; } ???如果是,那么返回指向局部变量的指针是错误的。 – Jagannath 2012-04-19 07:50:24
你能提供getAIMove()的代码吗?你是否返回一个本地堆栈分配变量? – 2012-04-19 07:50:47
@Jagannath你是对的,getAIMove()最终返回char str []。谢谢:)虽然我仍然不明白为什么传递一个整数值给cout会产生影响:S – 2012-04-19 08:00:24