C++

C++ memset 사용법

9keyyyy 2021. 7. 21. 18:05

memset 함수는 메모리의 내용을 원하는 크기만큼 특정값으로 설정 가능합니다.

보통 생성된 배열을 초기화할 때 사용합니다. 

 

먼저, memset 함수가 있는 헤더를 추가해야 합니다.

#include <string.h>

 

memset 사용법

memset(포인터(배열의 시작주소), 설정할 값, 크기);

  • 포인터 : 배열의 시작 주소를 넣습니다.
  • 설정할 값 : memset 함수는 1바이트 단위로 초기화하기 때문에 int형의 수를 넣을 때 0 이외의 수는 제대로 표현되지 않습니다. 즉, int 배열은 0으로 초기화할 때만 사용해야 합니다. char형의 경우에는 어떤 문자를 넣어도 문제 없습니다.
  • 크기 :  sizeof(자료형)*배열의 크기  혹은  sizeof(배열명) 으로 작성 가능합니다.
  • 원형 
    void* memset(void* ptr, int value, size_t num);

memset 사용 예제

#include <iostream>
#include <string.h>
using namespace std;

int main() {
	int intarr[10];
	char chararr[10];

	// 크기를 sizeof(자료형)*배열크기로 설정
	memset(intarr, 0, sizeof(int) * 10);
	for (int i = 0; i < 10; i++)
		cout << intarr[i] << " ";
	cout << endl;


	//  크기를 sizeof(배열명)으로 설정
	memset(intarr, 0, sizeof(intarr));
	for (int i = 0; i < 10; i++)
		cout << intarr[i] << " ";
	cout << endl;

	// int 배열에서 0이 아닌 수로 초기화 했을 때
	memset(intarr, 1, sizeof(intarr));
	for (int i = 0; i < 10; i++)
		cout << intarr[i] << " ";
	cout << endl;

	// char 배열 'a'로 초기화
	memset(chararr, 'a', sizeof(chararr));
	for (int i = 0; i < 10; i++)
		cout << chararr[i] << " ";
	cout << endl;

}

출력결과

int 배열에서 0이 아닌수로 초기화했을 경우 원하는 값으로 초기화 되지 않는 것을 확인할 수 있음