mem함수
와str함수
는 둘이 너무나도 비슷하다. 동일하게 동작하기도 하고 다르게 하기도 한다. 뭐가 다른걸까??
둘의 차이는 단순하다. str함수는 이름에 걸맞게 문자열을 검사하기위한
함수라서 '\0'
혹은 넘겨받는 size
를 통해서 종료시점을 알아낸다.
하지만 mem함수는 문자열만을 검사하기위한 함수가 아니다.
숫자, 구조체, 문자열 등 다양한 녀석들을 사용할 수 있게 하기 위해서 매개변수로 받는 size만을 통해서 종료시점을 알아낸다.
간단하게 예를 들어보자.
이런 식으로 구조체의 복사
를 한다거나 정수의 배열을 복사
한다거나 하는 방법이 가능하다는 말이 된다.
이유는 unsigned char
같은 경우에는 해당 변수 안의 모든 값이 부호비트
나 패딩비트
같이 어떠한 용도로 사용되는 값이 있지 않고 우리가 전달하고자 하는 값으로 모두 차 있다. 그렇기 때문에 mem함수나 str함수 같이 메모리영역에 직접적으로 하나씩 접근하는 녀석
들은 unsigned char로 바꿔서 접근하면 좋다고 한다.
뿐만아니라 char의 범위는 음수를 제외하면 127까지이다. 주로 쓰이는 아스키코드는 모두 포함되어 사용할 수 있지만 확장 테이블까지 포함하면 256
개이기 때문에 unsigned char의 형태를 사용하면 좀 더 넓은 범위를 사용할 수 있다.
참고