포인터와 배열


배열은 여러개의 값을 담을 수 있는 변수로써 각 값마다 주소 값을 가지고있다.

그렇기 때문에 포인터로 각 주소에 접근을 하여 값을 얻어 올수 있는데

이번 설명에서 그 방법에 대해 설명 하도록 하겠다.



포인터와 배열


다음과 같은 5개의 값을 가지고 있는 배열이 있다.

포인터로 각 값을 접근 하고 싶으면 어떻게 해야 할까?


int arr[5] = { 3, 7, 12, 24, 51 };

    int* ptr = NULL;


아래 답을 보기 전에 고민을 해보자..

....


ptr = &arr[0];


그렇다면 ptr이 24를 가리키려면 어떻게 바꿔야 할까?

...


ptr = &arr[3];

printf( " ptr 값 = %d, arr[3] 값 = %d \n", *ptr, arr[3] );


위의 printf을 실행해 보면 같은 값이 나오는 것을 확인 할 수 있다.


ptr = arr;

위의 ptr의 값은 무엇을 나타 낼까?

배열의 이름은 배열의 첫 번째 공간을 주소 값을 나타낸다. 

따라서 ptr이 가리키는 값은 arr 배열의 첫 번째 값인 3이다.


ptr = arr; // ptr = &arr[0] 과 같다.


전체 예제는 다음과 같다.


#include <stdio.h>


int main()

{

int arr[5] = { 3, 7, 12, 24, 51 };

int* ptr = NULL;


ptr = arr;


printf( " arr의 값=%d \n", *ptr );


ptr = &arr[0];


printf( " arr의 값=%d \n", *ptr );


ptr = &arr[3];


printf( " ptr 값 = %d, arr[3] 값 = %d \n", *ptr, arr[3] );


}



반응형

'프로그램 > C' 카테고리의 다른 글

[C] 포인터와 상수(const)  (0) 2017.07.23
[C] Call-By-Value와 Call-By-Reference  (0) 2017.07.22
[C] 시간차이 구하기 ( millisecond 까지.. )  (0) 2017.07.16
[C] 포인터 자료형  (0) 2017.07.13
[C] 포인터 기초  (0) 2017.07.06

+ Recent posts