> 백엔드 개발 > C++ > C에서 참조와 포인터를 언제 사용해야 합니까?

C에서 참조와 포인터를 언제 사용해야 합니까?

Linda Hamilton
풀어 주다: 2024-11-13 12:26:02
원래의
262명이 탐색했습니다.

When Should I Use References vs. Pointers in C  ?

C에서 참조 전달과 포인터 비교

C에서 참조와 포인터를 언제 사용해야 하는지 이해하는 것은 혼란스러운 주제일 수 있습니다. 이 문서에서는 참조에 의한 전달과 포인터에 의한 전달의 미묘한 차이를 살펴보고 실용적인 지침을 제공합니다.

참조에 의한 전달:

다음과 같은 경우에 참조에 의한 전달을 권장합니다.

  • 전달된 변수의 실제 값을 수정합니다.
  • 복사 오버헤드를 피하면서 복잡한 객체(예: 문자열, 벡터)를 효율적으로 전달합니다.

포인터로 전달:

다음과 같은 경우 포인터로 전달이 필요합니다.

  • 임시 객체를 참조로 전달할 수 없습니다(참조는 기존 객체에 바인딩되어야 하기 때문). ).
  • 널 포인터를 전달해야 합니다.
  • 타겟이 아닌 포인터 자체를 변경해야 합니다(예: 포인터에 새 값 할당).

모범 사례:

일반적으로 가능하면 참조로 전달하는 것을 선호합니다. 그러나 리터럴, 널 포인터 또는 포인터 자체를 수정해야 하는 상황을 처리할 때는 포인터로 전달합니다.

예:

제공된 코드 조각은 전달합니다. 지도에 동적으로 할당된 벡터에 대한 포인터입니다. 새 벡터를 생성하고 지도를 참조하여 전달해야 하기 때문에 이는 유효한 접근 방식입니다. 포인터를 사용하면 전체 벡터를 복사할 필요가 없습니다.

#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <tr1/memory>
#include <algorithm>
using namespace std;
using namespace std::tr1;

int main(){
        map<string, shared_ptr<vector<string>>> adjacencyMap;
        vector<string>* myFriends = new vector<string>();
        myFriends->push_back(string("a"));
        myFriends->push_back(string("v"));
        myFriends->push_back(string("g"));
        adjacencyMap["s"] = shared_ptr<vector<string>>(myFriends);
        return 0;
}
로그인 후 복사

위 내용은 C에서 참조와 포인터를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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