[C++] 배열 특정 값으로 한 번에 초기화하는 법

gogori6565·2022년 7월 21일
0

배열의 모든 요소를 한 번에 초기화하는 방법으로

int arr[10]={0,};

을 알고있다.
그러나, 이 방법은 0만 초기화할 수 있다!

int arr[10]={-1,};

로 하게되면 첫 요소만 -1, 나머지는 전부 0으로 초기화된다.


🙄 그럼 0말고 다른 특정값으로 한 번에 초기화하려면?

1. for문 사용

int arr[10];

for(int i=0;i<10;i++)
	arr[i]=-1;

하지만 이게 싫어서 더 간단한 방법을 찾아본거다.


2. std::fill_n() 함수

C++ 에서 사용할 수 있다.

std::fill_n(arr, 10, -1);

std::fill_n(배열 이름, 초기화할 요소의 개수, 초기화할 값) 의 형태로 사용하면 된다.

  • 초기화할 요소의 개수 : 말그대로 꼭 배열의 크기 전체를 입력할 것 없이 5개만 초기화하고 싶다면 5라고 입력해주면 된다.

3. 기타 (C의 경우)

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)

    • ptr : 초기화하고자 하는 메모리의 시작 주소
    • value : 초기화하고자 하는 값
    • size_t num : 길이 (sizeof(데이터타입)*길이)
  • 헤더파일 : <string.h> or <memory.h>

profile
p(´∇`)q

0개의 댓글