memset 함수를 사용하면 배열이나 구조체 같은 데이터 구조의 초기화를 간단하고 빠르게 수행할 수 있습니다. 예를 들어, 정수 배열을 0으로 초기화하거나, 문자 배열에 특정 문자를 채울 때 유용하다.
C 언어의 표준 라이브러리인 <string.h>에 정의되어 있다.
void *memset(void *s, int c, size_t n);
s: 초기화할 메모리의 시작 주소
c: 메모리에 설정할 값 (int형으로 전달되지만, 실제로는 unsigned char로 변환되어 메모리에 저장됨
n: 초기화할 바이트 수
예제 1: 정수 배열 초기화
#include <stdio.h>
#include <string.h>
int main() {
int numbers[10];
memset(numbers, 0, sizeof(numbers));
for (int i = 0; i < 10; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
예제 2: 문자 배열 초기화
#include <stdio.h>
#include <string.h>
int main() {
char buffer[50];
memset(buffer, '-', sizeof(buffer));
buffer[49] = '\0'; // 마지막에 널 문자 추가
printf("Buffer: %s\n", buffer);
return 0;
}
주의사항
타입 캐스팅: memset은 두 번째 인자를 unsigned char로 취급하여 메모리에 저장하기 때문에, 초기화하려는 데이터 타입의 크기에 따라 예상치 못한 결과를 초래할 수 있다. 특히, 멀티바이트 타입에서는 주의가 필요하다.
'C 언어 함수' 카테고리의 다른 글
strtok를 연속 호출하면 인자에 NULL을 넣는다. (1) | 2024.04.28 |
---|---|
strcpy와 strdup 차이 (1) | 2024.04.28 |
sqrt 함수 (1) | 2024.04.22 |
부분 문자열 비교 함수 strstr (0) | 2024.04.22 |
삼항 연산자 사용하기 (1) | 2024.04.21 |