한국어
C/C++

C언어 강좌-배열과 포인터

makersweb 2014.03.10 22:35 조회 수 : 4189

1. 포인터로 배열 다루기

배열의 모든 값을 출력하는 함수를 만들 때 배열요소의 값을 일일이 전달인자로 주는 것은 한계가 있다. 아래 예제 코드를 보자!

 

배열의 선언

 

int ary[5] = {10, 20, 30, 40, 50};

 

함수의 호출

 

ary_prn(ary[0], ary[1], ary[2], ary[3], ary[4]);

▲모든 배열요소를 일일이 전달인자로 줘야 한다.
 

 

함수의 정의

void ary_prn(int a, int b, int c, int d, int e)
{
    printf(“%d, %d, %d, %d, %dn”, a, b, c, d, e);
}

▲매개변수도 배열요소의 개수만큼 있어야 한다!
 

 

포인터를 사용하면 배열요소의 값(데이터)를 간단히 처리할 수 있다.

 

2. 포인터로 배열요소를 참조하자!

배열은 첫번째 배열요소의 포인터만 알면 나머지 배열요소의 포인터도 쉽게 알 수 있다.
그림1.jpg

 

[그림 1]

 

포인터에 정수값을 더할 때는 포인터가 가리키는 자료형의 크기를 곱해서 더해준다. 예를 들어 4를 더하면 마지막 배열요소의 포인터가 구해진다.

그림2.jpg

 

[그림 2]

 

모든 배열요소의 포인터는 첫번째 배열요소의 포인터에 정수값을 차례로 더하면 구해진다.

int ary[5] = {10, 20, 30, 40, 50};

그림3.jpg

 

[그림 3]

각 배열요소의 포인터에 참조연산자를 사용하면 모든 값을 참조할 수 있다. 아래 코드가 그 예이다.

 

for(i=0; i<5; i++){
    printf(“%dn”, *(&ary[0]+i));
}

 

 

 

 

그림5.jpg

[그림 4]