본문 바로가기

C++/기초

[C++] 래퍼런스(Reference) 변수, 포인터(Pointer) 변수

래퍼런스 변수(&)

  1. 정의
    • 변수에 또 다른 이름 부여
      1. 매개변수를 호출한 함수에서 값을 바꾸는 기능
      2. 일반 변수 형태에서만 사용
      3. 배열 사용 불가
  2. 특징
    1. 선언 시, &연산자 사용
    2. 선언과 동시에 초기화
    3. 상수로 초기화 불가
    4. 함수 매개변수로 주로 사용
  3. 사용방법
    1. data_type& variable(value); or
      data_type &variable = value;
#include <stdio.h>
#include <iostream>
#include <iomanip>

using namespace std;


void test1(int variable) {
    variable = 100;
    cout << "\nresult is " << variable << endl;
}

void test2(int &referenceVariable) {
    referenceVariable = 100;
    cout << "\nresult is " << referenceVariable << "\naddress : " << &referenceVariable << endl;
}


void test2(int *variable) {
    *variable = 50;
    cout << "\nresult is " << *variable << "\naddress : " << variable << endl;
}





void main() {
    // 1. 일반함수
    int variable(10);
    test1(variable); 
    cout << "variable is : " << variable << endl;

    // 2. Reference Variable
    int variable2(10);
    test2(variable2);// Overloading 시, int가 &int보다 우선순위 높음
    cout << "variable2 is : " << variable2 << "\naddress : " << &variable2 << endl;

    // 3. Pointer Variable
    int variable3(10);
    test2(&variable3); // 매개변수가 다르기 때문에 Overloading 가능
    cout << "variable3 is : " << variable3 << "\naddress : " << &variable3 << endl;

}

reference와 ptr

포인터 변수(*)

래퍼런스변수와 가지고 있는 값은 메모리 주소로 같으나, 포인터는 값의 변경이 가능하다.

 

주소를 가지고 있는 변수로 data_type *ptr 로 선언되며

값 또는 변수를 참조(주소)한 값을 가지게 된다.

  1. 사용방법
    1. data_type* variable(&value); or
      data_type *variable = &value; or
      data_type * variable = nullptr;

 

'C++ > 기초' 카테고리의 다른 글

[C++] 문자열  (1) 2023.12.19
[C++] 동적할당  (1) 2023.12.18
[C++] bool 자료형  (0) 2023.12.14
[C++] 오버로딩, 디폴트 매개변수, 초기화  (0) 2023.12.14
[C++] namespace  (0) 2023.12.14