[C++] 2차원 배열 fill로 초기화

Kim Yuhyeon·2022년 3월 17일
0

C++

목록 보기
3/25

memset 함수 사용하기

2차원 배열을 fill로 초기화.
for문으로도 가능하긴 하나, fill로도 가능하다.
단순, 0으로 초기화하고 싶을 때는 memset이 가장 편하다.

목적

어떤 메모리의 시작점부터 연속된 범위를 어떤 값으로(바이트 단위) 모두 지정하고 싶을 때 사용하는 함수이다.

기본 함수 구조 및 매개변수

void * memset ( void * ptr, int value, size_t num );

ptr : 채우고자 하는 메모리의 시작 포인터(시작 주소)
value : 메모리에 채우고자하는 값. int형이지만 내부에서는 unsigned char(1 byte)로 변환되어서 저장된다.
num : 채우고자 하는 바이트의 수. 즉, 채우고자 하는 메모리의 크기

코드

#include <string.h> // string.h 파일이 필요합니다.

int main (){

    char a[20];

    // 1바이트마다 모두 65로 초기화
    // 배열을 채울 때는 sizeof()함수를 사용하면 됩니다.
    // sizeof 함수 - 배열의 전체 바이트 크기를 반환합니다.
    memset(a, 65, sizeof(a));

    // 출력을 통해 확인
    for(int i = 0; i < (sizeof(a)/sizeof(char)); i++){
        printf("%c\n", a[i]);
    }

}

memset 함수를 사용하는 이유

  • 대체로 memset함수는 특정 범위에 있는 연속된 메모리에 값을 지정하고 싶을 때 사용하는데 for문보다 더 빠른 속도가 나올수가 있다.
  • 여기서 나올수가 있다라고 표현한 이유는 컴파일러 그리고 컴퓨터 아키텍처에 따라서 다르기 때문이다.
  • 자세한 내용은 twpower님 블로그

💡 참고 포스팅

twpower님 블로그
hsdevelopment님 블로그

0개의 댓글