>백엔드 개발 >C++ >C에서 포인터는 값 또는 참조로 인수로 전달되는 방법은 무엇입니까?

C에서 포인터는 값 또는 참조로 인수로 전달되는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-06 16:56:141004검색

How Are Pointers Passed as Arguments in C  , by Value or by Reference?

포인터 인수 전달: C에서 값으로 전달 또는 참조로 전달

C에서 인수는 일반적으로 포인터를 포함하여 값으로 전달됩니다. 포인터가 인수로 전달되면 포인터가 가리키는 개체의 주소가 함수의 매개 변수에 복사됩니다. 즉, 함수 내에서 포인터 자체에 대한 변경 사항은 함수 외부에 반영되지 않습니다.

단, 포인터가 가리키는 개체에 대한 변경 사항은 다음을 통해 원래 개체가 수정되므로 반영됩니다. 포인터 참조. 따라서 해당 함수 내의 포인터 값을 수정하기 위해 포인터에 대한 포인터를 함수에 대한 인수로 사용하는 것이 표준 절차입니다.

예를 들어 다음 코드를 고려해보세요.

void ModifyPointer(int **ptr) {
  *ptr = new int;
}

int main() {
  int *ptr = new int;
  ModifyPointer(&ptr);
  return 0;
}

이 코드에서 ModifyPointer 함수는 포인터에 대한 포인터를 인수로 사용합니다. 함수 내에서는 새로운 int 객체가 할당되고 매개변수가 참조하는 포인터가 새 객체를 가리키도록 업데이트됩니다.

포인터 대 포인터를 통해 원래 포인터가 수정되므로 변경 사항이 주요 기능. 이제 ptr 변수는 새로 할당된 int 객체를 가리킵니다.

C에서는 가능하면 포인터 대신 참조를 사용하는 것이 좋습니다. 참조는 포인터와 유사한 기능을 제공하지만 더 깔끔한 구문과 더 강력한 유형 검사 기능을 제공합니다.

예를 들어 위의 예는 참조를 사용하여 다시 작성할 수 있습니다.

void ModifyPointer(int *&ptr) {
  ptr = new int;
}

int main() {
  int *ptr = new int;
  ModifyPointer(ptr);
  return 0;
}

위 내용은 C에서 포인터는 값 또는 참조로 인수로 전달되는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.