본문 바로가기

C++

C++ memset 사용법

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이 아닌수로 초기화했을 경우 원하는 값으로 초기화 되지 않는 것을 확인할 수 있음

'C++' 카테고리의 다른 글

C++ stl sort  (0) 2022.03.31
C++ string 클래스  (0) 2021.07.21