---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
다만 배열의 이름이 주소값이지만
그 값을 변경할수 없어
특별히 배열을 상수형 포인터라고 부릅니다.
---------------------------------------------------
예제를 살펴보겠습니다.
배열 arr의 이름인
arr을 출력하고
배열 0번째 값의 주소
배열 1번째 값의 주소
배열 2번째 값의 주소를
차례로 출력하고 있습니다.
---------------------------------------------------
실행결과는 다음과 같습니다.
---------------------------------------------------
배열 arr의 이름인
arr을 출력해보면 주소가 나옵니다.
arr의 값은 배열 0번째 값의 주소와 같습니다.
따라서, 주소값을 가지면 가리킨다. 라고 해서
다음과 같은 그림으로 표현할 수 있습니다.
---------------------------------------------------
예제코드를 보겠습니다.
7번째 줄에서
int형 포인터 변수 ptr에
배열의 이름 arr을 넣고 있습니다.
---------------------------------------------------
배열의 이름 arr는
주소값입니다.
따라서 배열도 일종의 포인터입니다.
arr에 들어있는 값은
&arr[0]인
arr[0] 값의 주소와 같습니다.
---------------------------------------------------
따라서
ptr에 arr을 대입하면
ptr은 arr 배열을 가리키게 되고
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이 가리키는 곳의 값이 출력됩니다.
---------------------------------------------------
실행결과는 다음과 같습니다.
배열도 포인터이고
배열의 이름과, 포인터 연산, 참조 연산자를
사용하여 배열의 값을 출력할수 있습니다.
---------------------------------------------------
'C_프로그래밍' 카테고리의 다른 글
[C 프로그래밍] 36장. 문자열 표현방식 (0) | 2020.04.06 |
---|---|
[C 프로그래밍] 35장. 포인터 배열 (0) | 2020.04.06 |
[C 프로그래밍] 33장. 포인터 연산 (0) | 2020.04.06 |
[C 프로그래밍] 32장. 포인터 (0) | 2020.04.06 |
[C 프로그래밍] 31장. 2차원 배열 (0) | 2020.04.06 |