[C/C++ 3.2] 1차원 배열 초기화
* 배열 초기화 방법 간단히 한번에 정리 !!!!! **************
1차원 배열 초기화
숫자 0 으로 초기화하기
int arr[4] = {};
int arr[4] = {0};
int arr[4] = {0,0,0,0};
'0 이 아닌 다른 수'로 초기화 하기
* '0 이 아닌 다른 수'로 배열의 모든 요소를 한번에 초기화 하는 방법은 없다!!
* ex) int arr[] = {4}; 와 같은 방식으로 arr[] 배열의 모든 요소값을 숫자 4로 초기화 할수는 없다!!!
- 다음과 같은 방식으로, for문 등을 활용해 요소 하나하나에 접근해 값을 넣어주어야 한다.
int arr[4];
for (int i = 0; i < 4; i++) {
arr[i] = 5;
}
모두 다른 수로 초기화 하기
int arr[4] = {3,1,2,5};
int arr[] = {3,1,2,5};
- 아래 코드처럼, arr의 size를 [ ] 안에 지정하지 않고 비워두더라도,
우변에서 정의한 배열의 크기에 맞게 자동으로 size가 설정된다.
(* 물론 배열의 모든 요소를 하나하나 직접 정의한 이 같은 경우에만 가능하다)
char 문자로 초기화하기
char arr[3] = { 'm','i','n' };
- 작은 따옴표로 한 글자씩 입력
마지막 index에 접근
arr[-1]
=> arr의 주소 + sizeof(int) * -1 의 위치에 접근한다.
* '0 이 아닌 다른 수'로 배열의 모든 요소를 한번에 초기화 하는 방법은 없다!!
* ex) int arr[] = {4}; 와 같은 방식
배열의 빈자리
- 초기화 후 값을 입력하지 않은 배열의 남은 자리에는,
NULL값이 아닌 [쓰레기값]이 채워져 있다!
- 즉, 값이 들어간 위치를 찾을 때, !=NULL로 찾으면 안됨
- 즉, arr[3] = {0} 이라도 사용해 빈 곳을 NULL값으로 채워주는 것이 좋다.
- NULL로 배열을 채워놓는다면, 다음과 같은 조건문( == NULL)에서
NULL / 0 / \0 을 모두 똑같이 NULL로 받아들인다.
// 배열의 빈자리 2
if (arr[i][j] == NULL) // 그런데 여기 조건문 쓸 땐, NULL이든, 0 이든, \0이든, 똑같이 옳게 받아들임
cout << 0;
else
cout << arr[i][j]; // 0이 아닌 NULL로 채워놨기 때문에, 이것만 쓰면 빈칸은 출력 안됨
즉, arr[] = {} 으로 초기화를 해줘야지만
다음과 같은 조건을 걸었을 때, break문이 정상작동 될 수 있다
if (arr[idx] == '\0')
break;