본문 바로가기
C_프로그래밍

[C 프로그래밍] 34장. 포인터와 배열

by 팔공산호랑이 2020. 4. 6.

---------------------------------------------------

---------------------------------------------------

 

---------------------------------------------------

---------------------------------------------------

 

다만 배열의 이름이 주소값이지만

그 값을 변경할수 없어

특별히 배열을 상수형 포인터라고 부릅니다.

---------------------------------------------------

예제를 살펴보겠습니다.

배열 arr 이름인

arr을 출력하고

배열 0번째 값의 주소

배열 1번째 값의 주소

배열 2번째 값의 주소를

차례로 출력하고 있습니다.

---------------------------------------------------

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

---------------------------------------------------

배열 arr 이름인

arr을 출력해보면 주소가 나옵니다.

arr의 값은 배열 0번째 값의 주소와 같습니다.

따라서, 주소값을 가지면 가리킨다. 라고 해서

다음과 같은 그림으로 표현할 수 있습니다.

---------------------------------------------------

예제코드를 보겠습니다.

7번째 줄에서

int형 포인터 변수 ptr

배열의 이름 arr을 넣고 있습니다.

---------------------------------------------------

배열의 이름 arr

주소값입니다.

따라서 배열도 일종의 포인터입니다.

arr에 들어있는 값은

&arr[0]

arr[0] 값의 주소와 같습니다.

---------------------------------------------------

따라서

ptrarr을 대입하면

ptrarr 배열을 가리키게 되고

arr 배열 모양과 같은 모양이 됩니다.

---------------------------------------------------

그리고

arr값은

배열 0번째 주소값인 &arr[0]과 같고

포인터 연산에 의하여

arr+1

배열 1번째 주소값인 &arr[1]은 같습니다.

arr+2

배열 2번째 주소값인 &arr[2]은 같습니다.

---------------------------------------------------

그래서

참조 연산자를 사용하여

*arr하게되면

arr이 가리키는 곳

, 배열 0번째 값과 같고

*(arr+1)하게되면

arr+1이 가리키는 곳

, 배열 1번째 값과 같고

*(arr+2)하게되면

arr+2가 가리키는 곳

, 배열 2번째 값과 같습니다.

---------------------------------------------------

9번째 줄은

arr이 가리키는 곳의 값

ptr이 가리키는 곳의 값이 출력됩니다.

---------------------------------------------------

10번째 줄은

arr+1이 가리키는 곳의 값

ptr+1이 가리키는 곳의 값이 출력됩니다.

---------------------------------------------------

11번째 줄은

arr+2이 가리키는 곳의 값

ptr+2이 가리키는 곳의 값이 출력됩니다.

---------------------------------------------------

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

배열도 포인터이고

배열의 이름과, 포인터 연산, 참조 연산자를

사용하여 배열의 값을 출력할수 있습니다.

---------------------------------------------------