memset 함수는
어떤 메모리의 시작점부터 연속된 범위를 어떤 값으로(바이트 단위) 모두 지정하고 싶을 때 사용하는 함수이다.
구조는
memset ( void * ptr, int value, size_t num );
ptr : 채우고자 하는 메모리의 시작 포인터(시작 주소)
value : 메모리에 채우고자하는 값. int형이지만 내부에서는 unsigned char(1 byte)로 변환되어서 저장된다.
num : 채우고자 하는 바이트의 수. 즉, 채우고자 하는 메모리의 크기
memset함수를 구현해보면 아래 코드와 같다.
-코드-
void* MYMEMSET(void* _StartPtr
, int _Data
, unsigned int _Number)
{
char* PStartPtr = (char*)_StartPtr;
for(int i = 0 ; i < _Number ; i++)
{
PStartPtr[i] = _Data;
}
return _StartPtr;
}
리턴하는 값이 배열 형이기때문에
void*형으로 함수를 선언하고.
void* _StartPtr 배열의 시작 주소를 받아온다.
int _Data 입력될 값을 받아온다.
unsigned int _Number 범위를 받아온다.
int main()
{
//배열
char Test[100];
//값 확인
for (int i = 0; i < 100; i++)
{
printf_s("%d ", Test[0]);
}
printf("다음 \n");
//함수
MYMEMSET(Test, 1, sizeof(Test));
//값 확인
for (int i = 0; i < 100; i++)
{
printf_s("%d ", Test[0]);
}
}
'게임 프로그래밍 > C++ 기초' 카테고리의 다른 글
C++ 증감연산자 (전,후) 구현 (0) | 2019.01.25 |
---|---|
C++ memcpy_s 함수 구현 (0) | 2019.01.25 |
C++ 포인터 (0) | 2019.01.25 |
C++ WHILE ,DO WHILE (반복문) (0) | 2019.01.25 |
C++ for (반복문) (0) | 2019.01.25 |