2012-04-27 2 views
0

이 코드는 ++자바에서 어떻게 포인터 (참조)를 사용할 수 있습니까? C에서

void generate_moves(char _board[9], std::list<int> &move_list) { 
    for(int i = 0; i < 9; ++i) { 
     if(_board[i] == 0) { 
      move_list.push_back(i); 
     } 
    } 
} 

나는 그렇게하지만 자바 코딩합니다. 내가 어떻게 해?

+0

당신은 자바에서 명시 적으로 포인터를 사용할 수 없습니다 – Rushil

+0

http://www.seas.upenn.edu/~cis1xx/resources/JavaForCppProgrammers/j-javac-cpp-ltr.pdf 그리고 더 많은 것들 ... – PeterMmm

+1

[Stack Overflow 코드 변환 서비스가 아닙니다.] (http://meta.stackexchange.com/a/129362/148158) –

답변

2

자바로 정확한 번역은 다음과 같습니다

import java.util.ArrayList; 
import java.util.List; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     char[] board = new char[] 
     { 
      'o', 'o', 'o', 
      'x', 'x', 'x', 
      'x', 'x', 'x' 
     }; 

     List<int> moves = new ArrayList<int>(); 
     generateMoves (board, moves); 
    } 

    public static void generateMoves(char[] board, List<int> moves) 
    { 
     for (int i = 0; i < board.length; ++i) 
     { 
      if (board[i] == 0) 
      { 
       moves.add (i); 
      } 
     } 
    } 
} 

자바에 포인터에 의해 전달 된 모든 객체가 고려되기 때문에. 귀하가 구체적으로하지 않는 한 사본이 없습니다.

+0

답장을 보내 주셔서 감사합니다. 왜 숯불을 정하셨습니까? –

+0

실제로 모든 개체는 값 참조로 전달됩니다. 또한,'char [] board = new char [] {...};'는 char [] board = {...}'로 단축 될 수 있습니다. –

+0

'int '가'String'이되는 이유는 무엇입니까? –

2
void generate_moves(char _board[], List<Integer> move_list) { 
    for (int i = 0; i < _board.length; ++i) { 
     if (_board[i] == 0) { 
      move_list.add(i); 
     } 
    } 
} 
+0

+1 :'char [] board'를 사용합니다. –

+0

@PeterLawrey - 아마도 마찬가지입니다. 물론 두 스타일 모두 작동하며, C++ 프로그래머는 후행하는'[] '를 사용하는 것이 더 편할 수 있습니다. 나는 또한 매개 변수 이름에서 밑줄이 OP와 무슨 의미인지 모른다. –

0

이 경우 Java 참조는 C++ 포인터보다 많거나 적을 것입니다. 이 경우

public void generate_moves(..., List<Integer> move_list) { 
... 
    move_list.push_back(i); 
} 

참조 move_list에 호출 push_back는 포인터 예를 똑같이 노력하고 있습니다. 개체 인스턴스에 대한 참조가 이어지고 메서드가 호출됩니다.

포인터 연산을 사용하여 어레이의 액세스 위치를 수행 할 수 없습니다. Java에서는 불가능합니다.

+0

Java 참조는 C++ 참조가 아닌 C++ 참조로 사용됩니다. –

+0

답변 해 주셔서 감사합니다. move_list.pushback()이 정의되지 않았다는 것을 배우고 싶다. 왜? –

+0

@tedd, 여기에 설명 된 차이점을 기반으로 완전히 동의해야합니다. http://en.wikipedia.org/wiki/Reference_(C%2B%2B) – hvgotcodes

관련 문제