
2차원 배열 풀이 완료~!
char 자료형은 참 신기하게도, 2가지 모습을 가진다.
'a' 도 char 97 도 둘다 char 자료형 이다.
또한 둘은 정확히 동일하다.
'a'는 표면적인 형태이고,char 97은 내부적인 형태로 생각하면 된다.
코드에 'a'라고 되있더라도 이는 내부적으로 char 97 인 것이다.
char arr[5][15] = {};
이렇게 하면 char 배열이 어떤 값으로 초기화될까?
다들 알다시피 char 0 으로 초기화된다.
그렇다면 char 0은 무엇일까? '\0' 이다. (\0의 ASCII 코드는 0 이다)
따라서 위의 방식으로 초기화하면 char 배열이 전부 '\0' 으로 초기화된다.
이를 이용해 해당 칸의 데이터가 '\0' 인지 확인함으로써 배열의 해당 인덱스가 빈 칸 인지 아닌지 확인이 가능하다.
arr (2차원 배열)
│
├── arr[0] (1차원 배열: int[4])
│ ┌─────────┬─────────┬─────────┬─────────┐
│ │ arr[0][0]│ arr[0][1]│ arr[0][2]│ arr[0][3]│
│ │ 10 │ 20 │ 30 │ 40 │
│ └─────────┴─────────┴─────────┴─────────┘
│
├── arr[1] (1차원 배열: int[4])
│ ┌─────────┬─────────┬─────────┬─────────┐
│ │ arr[1][0]│ arr[1][1]│ arr[1][2]│ arr[1][3]│
│ │ 50 │ 60 │ 70 │ 80 │
│ └─────────┴─────────┴─────────┴─────────┘
│
└── arr[2] (1차원 배열: int[4])
┌─────────┬─────────┬─────────┬─────────┐
│ arr[2][0]│ arr[2][1]│ arr[2][2]│ arr[2][3]│
│ 90 │ 100 │ 110 │ 120 │
└─────────┴─────────┴─────────┴─────────┘
이렇듯, 위의 경우 arr[1]은 1행의 배열을 나타낸다.
arr[i]는 2차원 배열을 이루는 char 배열중 하나이다. 따라서 위의 코드를 실행하면, 입력이 char 배열 타입으로 arr[i]에 들어간다.
예를들어보자,
C++ Stream Buffer에 afzz가 있다면 -> 이는 ['a','f','z','z','\0'] 의 형태로 arr[i]에 들어가게된다.