Java 참조와 C++ 포인터는 모두 메모리 주소를 가리킵니다. 메모리 데이터에 대한 작업은 참조나 포인터를 통해 완료되지만 구현, 원리 및 기능 측면에서 다릅니다.
(1) 유형: 값이 주소인 데이터 요소를 나타냅니다. Java로 캡슐화된 주소는 문자열로 변환하여 볼 수 있으므로 길이에 대해 걱정할 필요가 없습니다. C++ 포인터는 주소를 보유하는 변수입니다. 길이는 일반적으로 컴퓨터 단어 길이이며 int로 간주될 수 있습니다.
추천 무료 온라인 비디오 튜토리얼: java 비디오 튜토리얼
(2) 메모리 점유: 참조가 선언될 때 엔터티가 없으며 공간을 차지하지 않습니다. C++ 포인터는 선언된 후에 사용되는 경우에만 값이 할당됩니다. 필요하지 않으면 메모리가 할당되지 않습니다.
(3) 유형 변환: 참조의 유형 변환이 성공하지 못할 수 있으며, 런타임 시 예외가 발생하거나 컴파일이 통과되지 않습니다. C++ 포인터는 메모리 주소를 나타내고 메모리를 가리킵니다. 프로그램에게는 여전히 주소이지만 가리키는 주소는 프로그램이 원하는 주소가 아닐 수 있습니다.
(4) 초기값: 참조의 초기값은 java 키워드 null입니다. C++ 포인터는 int입니다. 포인터가 초기화되지 않으면 해당 값이 고정되지 않으므로 매우 위험합니다.
(5) 계산: 참고문헌을 계산할 수 없습니다. C++ 포인터는 ++ 또는 --와 같이 계산할 수 있는 int이므로 배열 첨자 대신 포인터가 사용되는 경우가 많습니다.
(6) 메모리 누수: Java 참조는 메모리 누수를 일으키지 않습니다. C++ 포인터는 메모리 누수가 발생하기 쉬우므로 프로그래머는 포인터를 주의해서 사용하고 제때에 재활용해야 합니다.
(7) 매개변수로서: Java의 메소드 매개변수는 값만 전달합니다. 참조가 매개변수로 사용되면 함수에서 참조된 값의 COPY를 제공하므로 함수 내에서 두 개의 참조 매개변수를 교환하는 것은 의미가 없습니다. , 함수는 매개변수의 COPY 값만 교환하기 때문에 참조 매개변수의 COPY에 의해 참조되는 객체는 참조 매개변수와 동일한 객체이기 때문에 함수 내에서 참조 매개변수의 속성을 변경하는 것이 합리적입니다.
C++ 포인터는 함수의 매개변수로 사용되는데 실제로 포인터가 가리키는 주소는 함수에 의해 연산되기 때문에 함수 내에서 포인터 매개변수를 사용한 연산은 포인터가 가리키는 주소(변수, 객체, 함수, 등.).
추천 관련 기사 및 튜토리얼: Java 입문 튜토리얼
위 내용은 Java 참조와 C++ 포인터의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!