mem함수와 str함수의 차이점

개발하는 곰댕이·2021년 4월 9일
1

C

목록 보기
1/3

mem함수str함수는 둘이 너무나도 비슷하다. 동일하게 동작하기도 하고 다르게 하기도 한다. 뭐가 다른걸까??

1. mem함수와 str함수의 차이점

둘의 차이는 단순하다. str함수는 이름에 걸맞게 문자열을 검사하기위한 함수라서 '\0' 혹은 넘겨받는 size를 통해서 종료시점을 알아낸다.

하지만 mem함수는 문자열만을 검사하기위한 함수가 아니다. 숫자, 구조체, 문자열 등 다양한 녀석들을 사용할 수 있게 하기 위해서 매개변수로 받는 size만을 통해서 종료시점을 알아낸다.

간단하게 예를 들어보자.

2. 예시

이런 식으로 구조체의 복사를 한다거나 정수의 배열을 복사한다거나 하는 방법이 가능하다는 말이 된다.

3. 내부에서 unsigned char의 형태로 캐스팅을 해주는 이유는??

이유는 unsigned char같은 경우에는 해당 변수 안의 모든 값이 부호비트패딩비트같이 어떠한 용도로 사용되는 값이 있지 않고 우리가 전달하고자 하는 값으로 모두 차 있다. 그렇기 때문에 mem함수나 str함수 같이 메모리영역에 직접적으로 하나씩 접근하는 녀석들은 unsigned char로 바꿔서 접근하면 좋다고 한다.

뿐만아니라 char의 범위는 음수를 제외하면 127까지이다. 주로 쓰이는 아스키코드는 모두 포함되어 사용할 수 있지만 확장 테이블까지 포함하면 256개이기 때문에 unsigned char의 형태를 사용하면 좀 더 넓은 범위를 사용할 수 있다.
참고

0개의 댓글