-
c++ array 배열 초기화 하는 방법유용한 정보 2020. 7. 3. 16:40반응형
알고리즘 문제를 풀 때 배열을 초기화해야 하는 경우들이 있습니다.
해당 방법을 정리해보았습니다.
1.간단한 배열 초기화 방법
int arr[3] = {0,1,1};
2. Bool형 배열 초기화 방법
bool arr2[3] = {false};
=> 이와 같은 방법으로 초기화 시, 초기값들을 모두 false로 초기화할 수 있습니다.
=> 이와 같은 방법을 사용할 시, 처음 값만 설정한 값으로 설정되며 나머지 값은 false로 초기화됩니다.
bool arr[3] = {true, true, true};
=> 이와 같은 방법으로 배열을 모두 true로 초기화 할수 있습니다.
3. 선언한 뒤에 함수를 통해 초기화하는 방법 - fill_n
fill_n(arr2, 3, true);
=> 초기화하려는 배열의 주소(배열의 이름이 주소), 초기화하려는 배열의 구간, 초기화할 값의 parameter를 넘겨주어 실행합니다.
4. 선언한 뒤에 직접 초기화하는 방법
for(int i=0; i<3; i++) { arr2[i] =true; }
=> for문을 통해 직접 초기화할 수 있습니다.
5.memset
void * memset ( void * ptr, int value, size_t num );
memset(arr2, true, sizeof(arr2));
=> 배열의 시작점(배열의 시작 포인터, 배열의 이름) , 채울 값, 채우고 싶은 범위의 parameter를 넘겨주어 실행합니다.
** memset을 사용하는 이유는 for문보다 더 빠른 속도의 실행을 할 수 있기 때문입니다.
** 컴퓨터의 아키텍처와 컴파일러의 종류마다 다르기 때문에 꼭 그렇다고는 할 수 없지만, 해당 함수를 사용하는 것은 추천됩니다.
6. 전역변수, 지역변수의 차이점
=> 전역변수를 선언하고 특정한 값을 대입하지 않는다면 BSS영역에 저장되며 "자동"으로 "0"으로 초기화가 됩니다.
=> 지역변수의 경우 스택에 저장되어 자동으로 초기화되지 않습니다.
전역변수 : 초기화필요 없이 "0"으로 초기화 지역변수 : 초기화 필요
프로그래머스를 보면 전역변수를 선언시 꼭 초기화하라는 문구가 나옵니다. 이러한 실수를 줄여주기 위한 TIP으로 보입니다.
-2021.12.30 에 6번을 추가하였습니다.
반응형'유용한 정보' 카테고리의 다른 글
string split 하는법 C++ | sstream 사용법 C++ | find함수 substr함수 (0) 2021.12.02 C++ sort함수 cmp 함수 (0) 2021.10.08 pair형 vector 정렬하기 / vector<pair< a, b>> sort /compare, greater, less (0) 2020.07.23 DFS, BFS code (0) 2020.07.09 아스키 코드 ASCII Table (0) 2020.03.10