2013-07-08 2 views
-2

if 문에서 데이터를 처리하는 중이고 해당 데이터를 로캘이 아닌 변수로 유지하려고하므로 문 외부에서 호출 할 수 있습니다. 여기에 실제 코드가 있습니다. 조심하십시오. 그것은 거의 아이디어의 추방이지만, 모든 아이디어 나 더 나은 솔루션을 환영 할 것입니다. (제안 사항이 현재 수준에서 너무 앞서지 않았다면) ...if 문에서 데이터 반환

코드 생성 및 다차원 문자 배열 (2 차원), 채 웁니다. 나중에 호출하려고 할 때 할당되지 않은 배열 값에 도달하면 프로그램이 충돌합니다. 여기

 do 
     { 
     destRow = (rand() % ROWS) + 1; // assigning random placement for destroyer ship 
     destCol = (rand() % COLLUMS) + 1; 
     destDir = (rand() % 2) + 1; 

     if (destDir == 1) { //Destroyer: 1 = right 
      if (destCol + 1 > COLLUMS) { 
       continue; 
      } else { 
       char enemyDestroyer[DESTROYER_SIZE][2] = { { board[destCol][0] , board[0][destRow] }, { board[destCol + 1][0] , board[0][destRow] } }; 
      } 

     } else if (destDir == 2) { //Destroyer: 2 = down 
      if (destRow + 1 > ROWS) { 
       continue; 
      } else { 
       char enemyDestroyer[DESTROYER_SIZE][2] = { { board[destCol][0] , board[0][destRow] }, { board[destCol][0] , board[0][destRow + 1] } }; 
      } 
     } 
     destSucces = true; 
    } while (!destSucces); 

그것은 할당이 경우 문

if ((input[0] == enemyDestroyer[0][0] && input[1] == enemyDestroyer[0][1]) || (input[0] == enemyDestroyer[1][0] && input[1] == enemyDestroyer[1][1])) { 
    cout << "Hit!" << endl; 
    board[posY][posX] = '!'; 
    getchar(); 

    //setting display damage 
    if (input[1] == enemyDestroyer[0][1]) { 
     enmDesDisp[0] = '!'; 
    } else if (input[1] == enemyDestroyer[1][1]) { 
     enmDesDisp[1] = '!'; 
    } 
} else { 
    cout << endl << "Splash!" << endl; 
} 
에 생긴 때문에 실제로 아무것도 설정되어 있지 않은 상기 데이터 세트와 (다른 지점에서 수집 된) 플레이어의 입력, 검사
+2

사용중인 언어로 질문에 태그를 답장하십시오. – Blorgbeard

+0

ofc, sry bout 그 –

답변

2

참조 할 배열이 명확하지 않습니다. 코드에서 상호 작용하는 배열은 enemyDestroyer이며 할당 후 메모리에서 즉시 해제됩니다.

아마도 당신은 당신이 할 일을 더 잘 이해할 수 있도록 예제를 확장 할 수 있습니까? 즉시 발표 youd가되는에서 enemyDestroyer을 방지하기 위해

업데이트

적절한 범위로 이동해야합니다. 이는 동일한 범위에서 사용된다는 것을 의미합니다.

범위를 읽고 아마도 객체 지향 디자인으로 전환하는 것이 좋습니다.

+0

음 ... "cout << enemyDestroyer [0] [0];"을 추가하면 " 루프가 끝나면 꽤 많이 돌아갑니다. –

+0

문제는 메모리에서 해제하고, if 문에 할당 된 값을 나머지 프로그램에서 사용할 수 있기를 바랍니다. –