>백엔드 개발 >C++ >C 함수의 포인터: 값으로 전달합니까 아니면 참조로 전달합니까?

C 함수의 포인터: 값으로 전달합니까 아니면 참조로 전달합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-30 21:20:11461검색

Pointers in C   Functions: Pass by Value or Reference?

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

C에서 포인터를 전달하는 것은 일반적인 오해입니다. 인수는 값을 전달하는 것과 같습니다. 그러나 그렇지 않습니다.

포인터는 값으로 전달됩니다

포인터가 함수에 전달되면 포인터의 이 포인터, 즉 포인터가 가리키는 메모리 주소가 함수의 로컬 메모리에 복사됩니다. 즉, 함수 내부의 포인터에 대한 변경 사항은 원래 포인터 변수에 영향을 주지 않습니다.

지정 값 변경

그러나 포인터가 가리키는 값에 대한 변경 사항은 원래 변수에 반영됩니다. 객체 자체가 아닌 포인터 자체가 원래 객체의 주소를 저장하기 때문입니다.

포인터 값 수정

내부의 포인터 값을 수정하려는 경우 함수를 사용하려면 포인터 대 포인터를 사용해야 합니다. 포인터를 포인터로 전달하면 원래 포인터의 주소가 함수에 복사됩니다. 이를 통해 함수 내에서 원래 포인터를 수정할 수 있습니다.

표준 관행

C에서는 포인터에 대한 포인터를 다음과 같이 사용하는 것이 허용되며 표준 관행으로 간주됩니다. 함수 내에서 포인터 값을 수정해야 할 때 인수입니다. 이는 C의 이후 버전까지 참조가 도입되지 않았기 때문에 C와 C에서 일반적인 기술입니다.

참조 대 포인터

현대 C에서는 참조가 선호됩니다. 여러 가지 이유로 포인터를 오버하는 경우:

  • 구문이 부족함 노이즈
  • 컴파일러에 대한 추가 정보
  • 포인터 대 포인터의 특정 경우 참조를 사용하면 코드를 단순화할 수 있습니다.

단, C에서는 참조가 지원되지 않습니다. , 값별 전달 규칙을 위반합니다.

위 내용은 C 함수의 포인터: 값으로 전달합니까 아니면 참조로 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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