이 빨리 가능한 한 간결하게하려면이 내 코드입니다 :문자 배열의 내용을 변경할 수 있습니까?
char* aiMove = getAIMove();
cout << aiMove;
cout << "\n" << numMoves << ": " << aiMove << "\n\n";
return aiMove;
그리고 이것은 내 출력 :
a0 a1
0: �����������������������7
그래서, 첫 번째 줄 getAIMove을 (호출) 및 반환을 할당 value (char *)를 aiMove로 변경하십시오.
두 번째 줄은 aiMove (a0 a1)를 인쇄합니다.
세 번째 줄은 numMoves 및 aiMove를 cout으로 가져 와서 인쇄하지만 일부 이상한 값을 대신 인쇄합니다.
4 번째 줄은 aiMove를 반환하며, 이상한 값으로 인쇄되도록 검사했습니다.
왜 aiMove 값이 변경 되었습니까? 이것은 cout에 정수 값을 전달할 때만 발생하는 것으로 보입니다 (이 경우 numMoves).
도와주세요! 감사합니다, 패트릭 :
이편집 : 내가 얘기를 깜빡 했네요 또 다른 한가지는 코드 블록이 처음으로 실행됩니다 때이 이상한 행동은 발생 즉, 프로그램 동안 실행됩니다 때마다 다음 시간이 인쇄 벌금.
getAIMove() is char * getAIMove() {char str [] = "Patrick"; return str; } ??? 그렇다면 로컬 변수에 대한 포인터를 반환하는 것은 잘못된 것입니다. – Jagannath
getAIMove() 코드를 제공 할 수 있습니까?할당 된 로컬 스택을 반환합니까? –
@ Jagannath 맞아, getAIMove()가 결국 char str []을 반환합니다. 고마워. 왜 아직도 정수 값을 cout에 건네 주면 이해가 안되지만 S –