카테고리 없음

C++ 2. 참조자

sooom13579 2022. 4. 25. 16:46

C언어에서는 어떤 변수를 가리킬때 반드시 포인터 사용, C++에서는 참조자라는 방식을 사용!

#include <iostream>

int change_val(int *p) {
  *p = 3;

  return 0;
}
int main() {
  int number = 5;

  std::cout << number << std::endl;
  change_val(&number);
  std::cout << number << std::endl;
}

결과 값 : 5

            3

#include <iostream>

int main() {
  int a = 3;
  int& another_a = a; //another_a는 a의 참조자!

  another_a = 5;
  std::cout << "a : " << a << std::endl;
  std::cout << "another_a : " << another_a << std::endl;

  return 0;
}

결과값 : a : 5

           another_a : 5

 

여기서 int & 참조자이름  = a;  는 another_a는 a의 참조자 임을 공표하는 일..!

그러므로 another_a = a는 같아짐 그래서 another_a에 5대입하면 a도 5가 됨

int& another_a = a;

참조자는 처음에 누구의 별명이 될것인지 지정해야 함

참조자가 한번 별명이 되면 절대 다른 이의 별명이 되지 못함

 

another_a를 위해 메모리 공간 할당이 불필요 --> a로 바꿔치기 하면 되니까!!

 

#include <iostream>

int change_val(int &p) {
  p = 3;

  return 0;
}
int main() {
  int number = 5;

  std::cout << number << std::endl;
  change_val(number);
  std::cout << number << std::endl;
}
실행결과
5
3

 

#include <iostream>

int change_val(int &p) {
  p = 3;

  return 0;
}
int main() {
  int number = 5;

  std::cout << number << std::endl;
  change_val(number);
  std::cout << number << std::endl;
}

change_val(int &p) 와 같이 함수가 참조자를 받게 하였음...!

int& p = number 가 실행된다고 생각하면 됨.

 

- 리터럴(literal): 소스 코드 상에서 고정된 값을 가지는 것