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

+ Recent posts