티스토리 뷰
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, 1, sizeof(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
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 인공지능윤리성
- 식별자오류
- IT뉴스브리핑
- 신입개발자일기
- 20대대통령
- 포스코 #데이터사이언스 #데이터분석
- sap코리아
- 신은영
- 대혐오시대
- 유엔여성기구성평등센터
- 개발자일기
- 여성대표
- 극단적선택
- 자연어처리 #TIL
- 신은영대표
- 주가반영
- 뱅샐
- CBDC
- 빅데이터분석 #데이터분석실무 #포스코빅데이터아카데미
- 김정주이사
- 신입일기
- 크래프톤
- 데이터분석실무 #포스코빅데이터아카데미
- 인공지능투명성
- 종만북
- 2과목 소프트웨어 개발
- 빅데이터 #데이터분석
- IT주식
- 테크스펙
- 주가부양책
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함