본문 바로가기

Programming/[C++]

[C++] pointer (포인터)

4) [] -> * 표현식

- 포인터는 주소 값을 저장하는 변수이다.

- 포인터를 배열로 표현할 수 있고, 배열을 포인터로 표현할 수 있다.

- 표현만 바뀌는 것이다. (배열과 포인터는 완전 다르다. 하지만 둘 모두 주소 값을 저장하고 있기에 호환 가능)

 

ex) int a[4] = {4,3,2,1} 라는 배열의 선언과 초기화를 실행하면 (1차원 배열)

구분기준 참고사항 비고
4 3 2 1 a[0] 자체의 값 요소의 값
a[0] a[1] a[2] a[3]
*a *(a+1) *(a+2) *(a+3) 괄호를 꼭 붙여야 함
&a[0] &a[1] &a[2] &a[3] &는 주소 표현 요소의 주소(&)
a a+1 a+2 a+3 주소 값 + X (4byte)
100 104 108 112 주소 출력 값

 

ex) int a[2][2] = {4,3,2,1} 라는 배열의 선언과 초기화를 실행하면 (2차원 배열)

구분기준 비고
1 2
4 3 2 1 요소의 값
&a[0][0] &a[0][1] &a[1][0] &a[1][1] 요소의 주소(&)
행의 개념으로 계산 할 때(2차원)
a - a+1 - 행 단위는 요소 계산 불가
요소의 개념으로 계산 할 때(1차원)
a[0] a[0]+1 a[0]+2 a[0]+3 ([])컴퓨터 입장 주소
a[0] a[0]+1 a[1] a[1]+1 ([])사람의 입장 주소
*a *a+1 *a+2 *a+3 (*)컴퓨터 입장 주소
*a *a+1 *(a+1) *(a+1)+1 (*)사람 입장 주소
21차 타입 캐스팅

ex) int a[2][2][2] = {8,7,6,5,4,3,2,1} 라는 배열의 선언과 초기화를 실행하면 (3차원 배열)

구분 기준 비고
1 2
11 12 21 22
8 7 6 5 4 3 2 1 값 자체
a[0][0][0] a[0][0][1] a[0][1][0] a[0][1][1] a[1][0][0] a[1][0][1] a[1][1][0] a[1][1][1] 요소의 값
&a[0][0][0] &a[0][0][1] &a[0][1][0] &a[0][1][1] &a[1][0][0] &a[1][0][1] &a[1][1][0] &a[1][1][1] 요소의 주소(&)
면의 개념으로 계산 할 때(3차원)
a - - - a+1 - - - -
행의 개념으로 계산 할 때(2차원)
a[0] - a[0]+1 - a[0]+2 - a[0]+3 - ([])컴퓨터
입장 주소
a[0] - a[0]+1 - a[1] - a[1]+1 - ([])사람
입장 주소
*a - *a+1 - *a+2 - *a+3 - (*)컴퓨터
입장 주소
*a - *a+1 - *(a+1) - *(a+1)+1 - (*)사람
입장 주소
요소의 개념으로 계산 할 때(1차원)
a[0][0] a[0][0]+1 a[0][0]+2 a[0][0]+3 a[0][0]+4 a[0][0]+5 a[0][0]+6 a[0][0]+7 ([])컴퓨터
입장 주소
a[0][0] a[0][0]+1 a[0][1] a[0][1]+1 a[1][0] a[1][0]+1 a[1][1] a[1][1]+1 ([])사람
입장 주소
**a **a+1 **a+2 **a+3 **a+4 **a+5 **a+6 **a+7 (*)컴퓨터
입장 주소
**a **a+1 *(*a+1) *(*a+1)+1 **(a+1) **(a+1)+1 *(*(a+1)+1) *(*(a+1)+1)+1 (*)사람
입장 주소
*a[0] *a[0]+1 *(a[0]+1) *(a[0]+1)+1 *a[1] *a[1]+1 *(*a[1]+1) *(*a[1]+1)+1 (*)([]) 섞인 경우

 

'Programming > [C++]' 카테고리의 다른 글

[C++] 콜론 초기화  (0) 2018.03.21
[C++] 다양한 포인터(pointer)  (0) 2018.03.21
[C++] Template(템플릿)  (0) 2018.03.21
[C++] Template 함수 (템플릿 함수)  (0) 2018.03.21
[C++] Template Class (템플릿 클래스)  (0) 2018.03.21