본문 바로가기

프로그래밍/C언어

[C언어] 포인터(3) - 포인터와 배열

안녕하세요 ! 초보개발자 입니다. 

이 블로그는 개인 공부 정리용 블로그 입니다. 

혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.

그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.

그럼 시작하도록 하겠습니다.




1.포인터(3)


1) 포인터와 배열


포인터로 배열도 다룰 수 있습니다. 길이가 4 인 int배열 arr(int arr[4]={0,1,2,3} 이 있을 경우 메모리에 저장된 배열은 다음과 같이 나타낼 수 있습니다.




배열 요소의 타입이 int 형이므로 배열의 각 요소의 사이 간격은 4byte인것을 알 수 있습니다. 


예제를 통해서 알아 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
 
 
int main(void) {
    
    int arr[4= { 0,1,2,3 };
    int *pt = &arr[0];
 
    printf("*pt = %d, pt = %p\n"*pt, pt);
    printf("arr[0] = %d, &arr[0] = %p\n", arr[0], &arr[0]);
    printf("arr[1] = %d, &arr[1] = %p\n", arr[1], &arr[1]);
    printf("arr[2] = %d, &arr[2] = %p\n", arr[2], &arr[2]);
    printf("arr[3] = %d, &arr[3] = %p\n", arr[3], &arr[3]);
    return 0;
}
 
cs


실행 결과는 다음과 같습니다.



배열 arr 의 첫 번째 요소의 주소를 포인터에 저장하였으므로 pt의 값과 &arr[0]의 값이 똑같은 것을 알 수 있습니다. 또한 포인터 pt가 가리키는 주소에 저장되어 있는 값인 *pt와 arr배열의 첫번째 요소의 값 역시 일치한 것을 볼 수 있습니다. 


오늘의 강의는 여기서 마치도록 하겠습니다. 일이 너무 바빠서 강의 내용이 많이 부족하네요.. 다음시간에도 역시 포인터를 이어서 설명해보도록 하겠습니다.