티스토리 뷰

Language/C

[C언어] memset

Mr.SIM 2013. 10. 9. 00:21

memset()는 메모리를 초기화 시켜주는 함수이다.

for() 이나 while과 같이 직접 하나하나 초기화시키는 방법보다 간결하고 빠른 방법으로, 다음과 같이 선언 되어있다.

memset(_Out_writes_bytes_all_(_Size) void * _Dst, _In_ int _Val, _In_ size_t _Size); 

3개의 인자가 필요하며, 첫 번째인자는 첫 번째 주소, 두 번째인자는 1바이트 값, 세 번째인자는 초기화할 크기를 나타낸다. 


다음과 같은 코드가 있다.

#include<stdio.h>
#include<malloc.h>
#include<memory.h>
 
#define SIZE 10   
int main(){
	int *arr = (int *)malloc(sizeof(int) * SIZE); 
	int i;  

	memset(arr, 0, sizeof(int)*SIZE);
	for(i=0; i<SIZE; i++)
		printf("%d\n", arr[i]); 

	free(arr);
	return 0;
}



이 코드는 arr배열은 한 번에 0으로 초기화시킨다.


두번째 인자값은 1바이트로 구성되어있기 때문에 0 또는 -1이 아닌 경우 사용자가 원하는 값이 출력되지 않는다.

하지만, 1바이트로 구성된 char변수를 사용해서 초기화시키게 되면, 사용자가 원하는 문자로 초기화 시킬 수 있게된다.





'Language > C' 카테고리의 다른 글

[C언어] 문자 관련 함수  (0) 2013.10.09
[C언어] exit()  (0) 2013.10.09
[C언어] 문자열 함수  (0) 2013.10.05
[C언어] void형 포인터  (0) 2013.10.02
[C언어] scanf와 scanf_s의 차이  (1) 2013.10.02
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday