(string.h에 선언되어 있음.)
- memset(포인터, 설정한 값, 크기);
- void *memset(void *_Dst, int _Val, size_t _Size);
- 값 설정이 끝난 포인터를 반환
memset 함수는 메모리의 내용을 원하는 크기만큼 특정값으로 설정할 수 있다.
인자 |
_Dst 설정한 포인터의 주소로, void* 형으로 변환되어서 전달된다. |
_Val 설정한 값으로, int 형 데이터를 인자로 받는다. |
_Size 설정할 크기, 포인터부터 몇 바이트인지를 나타낸다. |
리턴값 |
_Dst 이 리턴된다. |
예시1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char* ptr = (char*)malloc(sizeof(char) * 10);
memset(ptr, 65, sizeof(char) * 10);
for (int i = 0; i < 10; i++) {
printf("%3c", ptr[i]);
}
}
결과1
A A A A A A A A A A
예시2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int* ptr = (int*)malloc(sizeof(int) * 10);
memset(ptr, 1, sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
printf("%x ", ptr[i]);
}
}
결과2
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
예시2의 경우는 int형은 매 바이트를 1로 설정하였기에 결과가 위와 같이 나온다.
(int형이 4바이트라고 가정)
0000 0001 0000 0001 0000 0001 0000 0001 (2진법) = 16843009 (10진법)
즉, 위와 설정되어 결과2처럼 나온다.
참고자료
'Dev > C\C++' 카테고리의 다른 글
[C++] 함수와 const (0) | 2019.12.30 |
---|---|
[C/C++] free (0) | 2019.11.07 |
[C/C++] malloc (0) | 2019.11.07 |
[C/C++] memcmp (0) | 2019.11.02 |
[C/C++] memcpy (0) | 2019.11.01 |