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] | a[0]+1 | a[1] | a[1]+1 | ([])사람의 입장 주소 |
*a | *a+1 | (*)컴퓨터 입장 주소 | ||
*a | *a+1 | *(a+1) | *(a+1)+1 | (*)사람 입장 주소 2차 ☞ 1차 타입 캐스팅 |
ex) int a[2][2][2] = {8,7,6,5,4,3,2,1} 라는 배열의 선언과 초기화를 실행하면 (3차원 배열)
구분 기준 | 비고 | |||||||
1면 | 2면 | |||||||
1면 1행 | 1면 2행 | 2면 1행 | 2면 2행 | |||||
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] | - | a[0]+1 | - | a[1] | - | a[1]+1 | - | ([])사람 입장 주소 |
*a | - | *a+1 | - | - | - | (*)컴퓨터 입장 주소 |
||
*a | - | *a+1 | - | *(a+1) | - | *(a+1)+1 | - | (*)사람 입장 주소 |
요소의 개념으로 계산 할 때(1차원) | ||||||||
a[0][0] | a[0][0]+1 | ([])컴퓨터 입장 주소 |
||||||
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 | **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 |