> 백엔드 개발 > C++ > 포인터를 함수에 전달한 후에도 포인터가 변경되지 않는 이유는 무엇입니까?

포인터를 함수에 전달한 후에도 포인터가 변경되지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-26 12:23:10
원래의
1036명이 탐색했습니다.

Why Doesn't My Pointer Change After Passing It to a Function?

문제 이해: 수정되지 않은 포인터 전달

이 코드 조각에서 clickOnBubble 함수는 Bubble 객체(targetBubble)에 대한 포인터를 수신하고 버블 포인터(버블)의 벡터입니다. 문제는 함수가 실행된 후 함수에 전달된 targetBubble 포인터가 수정되지 않은 상태로 유지된다는 것입니다. 함수가 거품 벡터의 특정 거품을 가리키도록 targetBubble 포인터를 변경해야 한다고 예상하지만, 이는 일어나지 않습니다.

포인터 복사본 전달

이 동작의 이유는 참조가 아닌 targetBubble 포인터의 복사본을 전달하기 때문입니다. 포인터 복사본을 전달할 때 함수 내 포인터에 대한 변경 사항은 함수 외부의 원래 포인터에 반영되지 않습니다.

해결책: 포인터 참조 또는 포인터 대 포인터 사용

함수 외부의 targetBubble 포인터가 변경되었는지 확인하려면 포인터에 대한 참조를 전달하거나 포인터를 사용하여 포인터를 사용해야 합니다. 포인터.

포인터 참조 사용:

void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble *&targetBubble) {
    targetBubble = bubbles[i]; // Modified pointer here is reflected outside function
}
로그인 후 복사

포인터 대 포인터 사용:

void clickOnBubble(sf::Vector2i &mousePos, std::vector<Bubble *>& bubbles, Bubble **targetBubble) {
    *targetBubble = bubbles[i]; // Modified pointer here is reflected outside function
}
로그인 후 복사

In 두 경우 모두, 함수 내의 수정된 targetBubble 포인터는 외부의 원래 targetBubble 포인터에 반영됩니다. 기능입니다.

위 내용은 포인터를 함수에 전달한 후에도 포인터가 변경되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿