ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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번을 추가하였습니다. 

    댓글

Designed by Who.