티스토리 뷰

728x90
SMALL

예제3) 주의 사항

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<memory.h>
#include<string.h> // 둘다 포함해도 노상관
#include<stdio.h>
 
int main(void)
{
    int arr[5];
    
    // 0 이 아닌 다른 값으로 세팅
    memset(arr, 1sizeof(arr));
 
    for (int i = 0; i < 5++i)
    {
        printf("%d "*(arr + i));
    }
    
    return 0;
}
 
cs

결과에서 보셨듯이 0이 아닌 int 타입의 숫자를 넣게되면 예상할 수 없는 값으로 세팅 됩니다. 그 이유는 memset 함수는 1 바이트 단위로 값을 초기화 하기 때문입니다. 1바이트 단위로 1를 만들었기 때문에 4바이트로 표현된 int 숫자 1은 제대로된 숫자로 표현될 수 없습니다. 

0은 4바이트든 1바이트든 0 이기 때문에 동일한 결과값을 기대할 수 있던 것 입니다.

결론적으로
0 이아닌 그리고 char 타입이 아닌 값을 넣어서 세팅 하려고 할때는 우리가 원하는 값으로 세팅할수 없습니다.
즉, 0이랑 char 타입만 사용하시길!
그렇기 때문에 memset 함수는 보통 문자열(char 배열)에서 값을 변경하거나, 숫자배열을 0으로 세팅할때 사용하곤 합니다.

728x90
LIST

'개발 지식 정리' 카테고리의 다른 글

딥러닝 지식 정리  (0) 2022.04.15
소켓 통신  (0) 2022.04.05
지도 기능 개발  (0) 2022.03.29
네이버의 검색 알고리즘 그리고 알고리즘들  (0) 2022.03.16
노코드 프로그램  (0) 2022.03.15