minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (3)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • GSLB
  • 19년식그램램장착
  • 그램풀스팩업그레이드
  • 티스토리폰트배경색없애기
  • 구조체배열포인터
  • API문서정리
  • 인공지능개발자
  • 그램업그레이드
  • hello테마
  • OpenGL회전
  • 이차원구조체배열포인터
  • mfc
  • 19년식그램SSD장착
  • kafka구축
  • 이것이C++이다책참고
  • SpringBootSwagger
  • NextJSSwagger
  • 구조체매개변수
  • 리눅스파티션
  • AI배워야하나

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️C++

[C++] 참조자 형식 int &n = a;

2023. 8. 31. 18:33

참조자 형식 (Reference(주소) 형식)

C에는 없는 형식으로 포인터와 구조상 동일.

 

사용법

반드시 선언과 동시에 변수로 초기화 해야한다. 

int &변수명 = 참조할변수;

 

포인터와 비교

//포인터
int * ptr = a;  
*ptr = 10;

//참조자형식
int &rData = a; //변수를 참조한다고 해서 참조자 형식인 것.
rData = 10;     //참조한 변수와 동일한 변수라고 생각하고 사용하면 된다.
                //포인터와는 달리 * 연산자를 사용하지 않는다.
  • 처음 어떤 변수와 짝을 이루게 되면 그 짝이 달라지지 않는다.
  • 겉으로 보기에는 전혀 포인터로 보이지 않는다.  (값을 변경할 때 일반 변수처럼 사용하기 때문에)
  • 가능하다면 가급적 포인터 대신 참조 형식을 사용하기. 

 

 

매개변수가 참조 형식으로 되어있는 경우

#include <iostream>
using namespace std;

void TestFunc(int &rParam){
    rParam = 100;  //변수만 봐서 참조 형식인지 모른다는 것이 문제점이다. (변수만보고 형식 확신하지말기)
    			   //이렇게 연산하면 main의 변수값이 변경된다.
}

int _tmain(int argc, _TCHAR * argv[]){
    int nData = 0;
    
    TestFunc(nData);  //매개변수가 참조형식이므로 &nData로 기술하면 컴파일오류!!!!
    cout << nData << endl;  //100이 출력된다.
    return 0;
}

 

포인터 전형적인 예제 swap 함수를 참조 형식으로 구현

//포인터로 구현
void Swap(int *a, int *b){  
    int nTmp = *a;
    *a = *b;
    *b = nTmp;
}

int main(){
    int x = 10, y = 20;
    Swap(&x, &y);
    cout << "x: " << x <<endl;
    cout << "y: " << y <<endl;
}


//참조자형식으로 구현
void Swap(int &a, int &b){
    int nTmp = a;
    a = b;        //포인터와 달리 변수 앞에 *를 사용하지 않는 다는 점 주목
    b = nTmp;
}

int main(){
    int x = 10, y = 20;
    Swap(x,y);    //포인터와 달리 인자 앞에 &를 사용하지 않는 다는 점 주목
    cout << "x: " << x <<endl;
    cout << "y: " << y <<endl;
    
    return 0;
}

 

 

 

 

더보기
 

Visual Studio C++ 사전

c++ 공부 내용을 지속해서 추가하는 게시글입니다. 참고 책 Part1. C에서 C++로 문법 전환하기 Chap1. C와는 다른 C++ [C++] Hello world 출력해보기 [C++] 여러 변수 출력하기 [C++] Visual Studio 에서 추가로 사용

genius-duck-coding-story.tistory.com

 

 

 

'◼️C++' 카테고리의 다른 글

[C++] 소숫점 아랫자리 버리기. 정확하지 않은 실수 연산 해결하기  (0) 2023.09.04
[C++] 범위 기반 for 문 for(auto n : nList)  (0) 2023.08.31
[C++] 메모리 동적 할당. new(), delete()  (0) 2023.08.31
[C++] auto 자료형  (0) 2023.08.31
[C++] 변수 선언 및 정의  (0) 2023.08.31

    티스토리툴바