<memory.h>에 있는 memset은 표준 c라이브러리에서 부터 제공되던 것으로서 메모리를 기반으로 초기화한다.
memset은 다음과 같이 사용한다.
memset(배열이름, 초기화할 값, 배열크기);
배열 크기는 주로 sizeof()를 사용하여 구한다.
memset은 1바이트를 단위로 초기화가 되기 때문에 1바이트를 넘는 데이터형들은 0이외의 값으로 초기화 할 수 없다. 예를 들어 4바이트인 int를 1로 초기화를 하려고 하면 1바이트마다 1로 초기화가 되기 때문에 실제로 int에 들어가게 되는 값은 1000000010000000100000001가 되며 10진수로 표현하면 2^24+2^16+2^8+1 = 16843009가 나오게 된다.
따라서 1바이트 크기인 char이나 bool을 초기화할때 써주는게 좋다.
memset은 1차원 배열 뿐만이 아니라 2차원 3차원같은 고차원 배열을 초기화 시켜줄 수 있다.
fill은 <algorithm>에 있는 함수로 다음과 같이 사용한다.
fill(시작위치, 끝나는 위치+1, 초기화할 값);
fill은 데이터 형과 관계없이 초기화가 가능하다 , 하지만 1차원배열을 기준으로 만들어져서 2차원과 3차원배열은 다음과 같은 방식으로 처리해야 한다.
int a[5][5];
for( i =0;i<5;i++)
fill(a[i],a[i]+5,24);
memset은 다음과 같이 사용한다.
memset(배열이름, 초기화할 값, 배열크기);
배열 크기는 주로 sizeof()를 사용하여 구한다.
memset은 1바이트를 단위로 초기화가 되기 때문에 1바이트를 넘는 데이터형들은 0이외의 값으로 초기화 할 수 없다. 예를 들어 4바이트인 int를 1로 초기화를 하려고 하면 1바이트마다 1로 초기화가 되기 때문에 실제로 int에 들어가게 되는 값은 1000000010000000100000001가 되며 10진수로 표현하면 2^24+2^16+2^8+1 = 16843009가 나오게 된다.
따라서 1바이트 크기인 char이나 bool을 초기화할때 써주는게 좋다.
memset은 1차원 배열 뿐만이 아니라 2차원 3차원같은 고차원 배열을 초기화 시켜줄 수 있다.
fill은 <algorithm>에 있는 함수로 다음과 같이 사용한다.
fill(시작위치, 끝나는 위치+1, 초기화할 값);
fill은 데이터 형과 관계없이 초기화가 가능하다 , 하지만 1차원배열을 기준으로 만들어져서 2차원과 3차원배열은 다음과 같은 방식으로 처리해야 한다.
int a[5][5];
for( i =0;i<5;i++)
fill(a[i],a[i]+5,24);
댓글
댓글 쓰기