상세 컨텐츠

본문 제목

memset으로 배열 초기화 주의사항

프로그래밍/메모

by whave 2022. 2. 16. 12:15

본문

 

#include<string.h> // #include<memory.h> 도 괜찮습니다.
#include<stdio.h>
 
int main(void)
{
    char arr1[] = "blockdmask blog";
    memset(arr1, 'c', 5 * sizeof(char));
    printf(arr1);
 
    return 0;
}
#include<string.h>
#include<stdio.h>
 
int main(void)
{
    int arr[5];
    
    // 0 이 아닌 다른 값으로 세팅
    memset(arr, 1, sizeof(arr));
 
    for (int i = 0; i < 5; ++i)
    {
        printf("%d ", *(arr + i));
    }
    
    return 0;
}

memset을 사용할 때 0이 아닌 int형 수를 넣어주면 예상할 수 없는 값으로 세팅된다.

memset함수는 1바이트 단위로 값을 초기화하는데 0은 1바이트로든 4바이트로든 0이지만 0외의 int형은 1바이트일때와 4바이트일 때가 다르게 확인되므로 0외의 숫자로 초기화 될 수 없다.

 

char형은 1바이트로 표현가능 하기 때문에

memset으로 하는 배열 초기화 에선 int형 0 과 char형 문자로 초기화 할 수 있다.

 

 

출처: https://blockdmask.tistory.com/441 [개발자 지망생]

'프로그래밍 > 메모' 카테고리의 다른 글

[자료구조]heap  (0) 2022.02.16
다익스트라 알고리즘  (0) 2022.02.16
C언어 문자 배열 qsort  (0) 2022.01.18
BFS 너비 우선 탐색 알고리즘  (0) 2022.01.10
DFS 깊이 우선 탐색  (0) 2022.01.03

관련글 더보기