포인터와 배열
배열은 여러개의 값을 담을 수 있는 변수로써 각 값마다 주소 값을 가지고있다.
그렇기 때문에 포인터로 각 주소에 접근을 하여 값을 얻어 올수 있는데
이번 설명에서 그 방법에 대해 설명 하도록 하겠다.
포인터와 배열 |
다음과 같은 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 |