배열의 모든 요소를 한 번에 초기화하는 방법으로
int arr[10]={0,};
을 알고있다.
그러나, 이 방법은 0
만 초기화할 수 있다!
int arr[10]={-1,};
로 하게되면 첫 요소만 -1, 나머지는 전부 0으로 초기화된다.
🙄 그럼 0말고 다른 특정값으로 한 번에 초기화하려면?
int arr[10];
for(int i=0;i<10;i++)
arr[i]=-1;
하지만 이게 싫어서 더 간단한 방법을 찾아본거다.
C++ 에서 사용할 수 있다.
std::fill_n(arr, 10, -1);
std::fill_n(배열 이름, 초기화할 요소의 개수, 초기화할 값)
의 형태로 사용하면 된다.
C언어의 경우 memset()
함수를 사용하면 된다.
memset(arr, 0, sizeof(int)*10);
단, 0
이랑 char
타입이 아닌 값은 초기화할 수 없다!
=> memset 함수는 1byte 단위로 값을 초기화하기 때문이다. 즉, 4byte로 표현된 int 숫자들은 제대로된 수 표현을 할 수 없고, 0은 4byte이든 1byte이든 0이기에 동일한 결과값을 기대할 수 있었던 것!
사용법
: void memset(void* ptr, int value, size_t num)
헤더파일
: <string.h>
or <memory.h>