Programing/C- programing

Pointer * Reference

sosal 2009. 9. 29. 09:35
반응형

/*
 * made by so_sal
 * http://sosal.tistory.com/
 */


#include<iostream>
using namespace std;

포인터란? :: 주소값을 직접 컨트롤 하기 위해서, 실제 어떤 주소값을 저장하는 변수입니다.
     :: 주소값 수의 크기는 4byte입니다. 따라서 포인터의 크기도 4바이트입니다.

자료형에 따라서 포함하는 메모리 크기가 다릅니다.
따라서 포인터는 메모리의 처음만을 가르치고, 포인터 자체의 자료형에 따라서
메모리를 읽게 됩니다.

ex)
int형 포인터 :: int* pointer; 또는 int *pointer;
char형 포인터 :: char* pointr; 또는 char *pointer; (포인터의 위치는 관계없다)

변수명 앞에 &(reference)를 붙인다면, 그 변수의 처음 메모리 주소값을 반환합니다.
아래 그림을 미리 보시면, 포인터 pi 의 메모리는 4바이트로, 0012FF54부터 시작하는데,
pi의 주소값 &pi를 출력하면 아래 4번에서 보듯이 첫번째 메모리 주소값을 반환하게 됩니다.
밑에 int형 i의 주소값 &i 또한 마찬가지입니다.

int main(){
  int i = 5;
  int *pi; // == int* pi; 같음

  pi = &i;


1번:: cout<<i<<endl;    //= 5
2번:: cout<<&i<<endl;//0012FF60
3번:: cout<<pi<<endl;//0012FF60
4번::   cout<<&pi<<endl;//0012FF54
5번::   cout<<*pi<<endl;  // 5
  return 0;
}

1번 :: i의 값은 5
2번 :: & (reference)는 주소값을 의미합니다. 따라서 i의 주소값은 0012FF60
3번 :: pi는 i의 주소값을 가리키는 포인터입니다. 따라서 0012FF60
4번 :: pi라는 변수의 주소값은
0012FF54입니다.
5번 :: pi가 가리키고 있는 주소의 값은
5입니다.