memset 함수로 원하는 숫자로 초기화가 가능할까?
int 기준
-1
,0
밖에 불가능하다.
- 그 외 어떤수도 불가능하다.
1
역시 불가능하다.
memset의 동작 원리
memset
- memset은 byte 단위로 잘라서 초기화한다.
- 이점을 생각하면
0
과-1
이 왜 가능한지 알 수 있을것 이다. 0
은 4byte로 나타내면00000000000000000000000000000000
이다.
- 이것을 1byte로 잘라내면
00000000
이다.- 결과가 같다
-1
은 4byte로 나타내면11111111111111111111111111111111
이다.
- 이것을 1byte로 잘라내면
11111111
이다.- 결과가 같다
이렇게, int 타입에서 잘라내어도 똑같은 값을 가지는 경우에만 의도한 결과를 낳을 수 있다
-1, 0, 1 예시
code
1 |
|
output
1 |
|
1byte
char
- 1byte 자료형에는, 원하는대로 초기화가 가능하다.
- char의 경우, 1byte 자료형이기 때문에 가능하다.
code
1 |
|
output
1 |
|
- 나의 경우, memset은 bool 자료형에만 주로 사용한다.
- 원하는 원소로 배열을 채우고 싶다면, 반복문을 이용하거나
fill
함수를 이용하자