오늘의 TIL 목차 (22.08. 05)
- 2차원 배열
2차원 배열
[ 2차원 배열 ]
: 행 열 개념의 배열
int iArray[2][3] = { 1, 2, 3 }, { 4, 5, 6 };
int iArray[2][3] = {
0열 1열 2열
{ 1, 2, 3 }, // 0행
{ 4, 5, 6 } // 1행
};
int iArray[2][3] = { {1, 2}, {0} }; // 초기화 안된 부분은 0으로 채움
■ 기능 / 주의
- 2차원 배열은 포인터(이중 포인터 포함)를 사용할 수 없다.
- int iArray[2][3]은 행을 기점으로 배열의 개수 3개를 갖는 같은 이름 iArray 2개가 겹쳐있는 것이다.
- iArray[0]은 겹쳐있는 2개의 배열 중 0번째 배열의 시작 주소를, int iArray[1]은 1번째 배열의 시작주소를 출력
- 1차원 배열은 iArray[i]이 값 출력, 2차원 배열은 iArray[i][j]를 다 써주거나 주소 앞에 * 붙여야만 값 출력
int iArray[2][3] = { {1,8,12}, {4,7,10} };
int(*iArray)[3]; // 2차원 배열의 포인터형 자료형(*배열명)[열];
cout << iArray[1][1] << endl; // 행 1의 열 1 => 7
cout << sizeof(iArray) << endl; // iArray의 총 메모리 공간 4byte * 6 = 12byte
// 2차원 배열은 행 2개가 있다하면 같은 이름의 iArray[0] = {}, iArray[1] = {}; 배열이 2개 겹쳐있는 것
cout << " ===========" << endl;
cout << iArray << endl; // 배열 이름 자체가 주소이므로 대표주소 0,0 번지 주소 출력
cout << iArray + 1 << endl; // 배열 이름은 주소, 2D 배열이므로 다음 행의 주소 출력 (다음 열 X)
cout << *iArray + 3 << endl; // 시작 주소를 기준으로 열 단위로 주소 이동 출력을 원하면 * 붙이면 됨
cout << iArray[1] + 2 << endl; // 배열 1번째 행의 0번째 열의 주소에서 + 2 열 주소 출력
cout << iArray[0] << endl; // 배열 0번째 행의 첫번째 주소 출력
cout << iArray[1] << endl; // 배열 1번째 행의 첫번째 주소 출력
cout << *iArray[0] << endl; // 배열 0번째 행의 0번째 값 출력
cout << *iArray[1] + 1 << endl; // 배열 1번째 행 0번째 값에 1을 더함 (5 출력)
cout << iArray[0][0] << endl; // 배열 0번째 0의 값 출력
cout << iArray[0][0] + 1 << endl; // 배열 0번째 0의 값에 +1 더함 (2 출력)
'C++' 카테고리의 다른 글
| [TIL 12장] 문자열 함수, 구조체(feat. 포인터 사용), 공용체 (0) | 2022.08.10 |
|---|---|
| [TIL 11장] 문자열, 함수 포인터 (0) | 2022.08.08 |
| [TIL 9장] 이중 포인터 개념, 배열, 디버깅 (0) | 2022.08.04 |
| [TIL 8장] 포인터, 상수 포인터 (0) | 2022.08.03 |
| [TIL 7장] 함수(return, default 매개변수), 함수 오버로딩, 재귀함수, namespace, 정적변수 (0) | 2022.08.02 |