Visual Studio/C++ 기초

C++ 배열과 포인터

낙락장송s 2013. 11. 21. 15:55

배열을 사용하기 위해서는 배열명, 배열 크기, 배열 요소를 지정해야 합니다. 배열명은 해당 배열의 시작 주소이고, C++에선 배열명을 사용해서 배열의 시작 위치를 설정합니다.

int x[5] = {1, 2, 3, 4, 5}, *ptr;

ptr = x; 

포인터 변수 ptr에게 배열 x를 대입하였습니다. x는 배열명이기 때문에 해당 배열의 시작 주소 값입니다. 이를 쉽게 설명하면

 

x[0]의 시작 주소를 포인터 변수 ptr이 가지고 있기 때문에 ptr을 사용해서 배열 x를 처리할 수 있습니다. 구체적으로 표현하면 아래와 같습니다.

ptr    == &x[0]    *ptr       == x[0]
ptr+1 == &x[1]    *(ptr+1) == x[1]
ptr+2 == &x[2]    *(ptr+2) == x[2]
ptr+3 == &x[3]    *(ptr+3) == x[3]
ptr+4 == &x[4]    *(ptr+4) == x[4]

x[i]와 (ptr+i)는 동일하단 것을 알 수 있습니다. 간단한 예제를 보겠습니다.

#include <iostream>
using namespace std;

void main(){
 int arr[5] = {1, 2, 3, 4, 5}, *ptr, i;

 ptr = arr;

 for(i=0; i<5; i++)
  cout << arr[i] << ", " << *(ptr+i) << "\n";

 for(i=0; i<5; i++)
  cout << &arr[i] << ", " << ptr+i << "\n";
}