블로그 이미지
송시혁

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

2013. 11. 3. 23:14 c++

int a=100;

int &b=a;

b는 레퍼런스 변수로 직접 접근하는 변수


#include <iostream>
using namespace std;

int main()
{
  int a=100;
  int &r=a;
  
  printf("a : %d\n"sizeof(a));//4
  printf("&r: %d\n"sizeof(&r));//4
  printf("a : %08x\n"&a);//a의 주소 
  printf("&r: %08x\n"&r);//a와 똑같은 주소
  cout << "a= " <<<<endl;

  r=400;
  
  cout << "a= " <<<<endl;//400이 출력된다. 레퍼런스 &r은 a와 같은 주소를 지니므로 400이 된다.
여기서 중요한 점은 레퍼런스 변수는 a와 같은 주소를 지닌다. 즉, 메모리상 용량은 a변수 하나밖에 차지 하지 않는점이다. 

예를 들어서, ex) int *p=&a; 는 포인터 변수의 주소 p가 따로 생성이 된고 &a의 주소를 가르키게 된다. 즉, a의 주소가 1000이라고 한다면, 포인터 자체의 주소는 2000번지가 된다. 다만, 값을 넣을 때
a의 주소를 따라가서 1000번지에 해당 값을 넣는다. 포인터 자체의 주소는 따로 가지고 있어서, 메모리상에서 공간을 4바이트 차지한다.

그러나 레퍼런스 변수는 주소자체가 a의 주소와 같다.








'c++' 카테고리의 다른 글

11월 4일 함수와 레퍼런스(정리 중)  (0) 2013.11.04
11월 4일 동적할당  (0) 2013.11.04
11월 1일 문자열, 문자배열 c++에서 주의점  (0) 2013.11.03
11월 1일 namespace 기초  (0) 2013.11.01
10월 31일 C++ cout, cin  (0) 2013.10.31
posted by 송시혁