ft_bzero 구현

yeonjkim·2021년 5월 21일
0

42seoul-libft

목록 보기
2/43

1. ft_bzero 용도

* 인자로 받은 '주소값 s'에서 'n바이트'만큼 '0'으로 채우는 함수

2. ft_bzero 프로토타입

void	ft_bzero(void *s, size_t n)

3. 구현 시 유의사항

* 인자로 들어온 주소값 s를 (unsigned char *)으로 형변환 해줘야 한다.

--> unsigned char가 아닌 signed char의 경우,
    1의 보수 표현이나 부호-크기 방식(signed magnitude)방식으로 표현했을 시 -0을 가질 수 있다.
    -0은 null character가 될 수 없으므로 unsigned char로 접근하기를 요구하고 있다.
    
* size_t : 
  시스템에서 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 타입으로 반드시 unsigned형으로 나타낸다. 
  컴퓨터의 운영체제(x32 or x64)에 따라 size_t는 unsigned int, unsigned long long으로 나뉜다.
  

4. 코드 구현

#include "libft.h"

void                            ft_bzero(void *s, size_t n)
{
        unsigned char   *ret;
        size_t                  index;

        index = 0;
        ret = (unsigned char*)s;
        while (index < n)
        {
                ret[index] = 0;
                index++;
        }
}

5. 코드 구현 방법

  • ft_bzero : 주소값 s와 size_t n을 인자로 받아 s에 n만큼 0을 채워주는 함수

  • 앞서 언급한 대로 null character와 -0이 다른 관계로, unsigned char 형 포인터 변수 ret 생성.

  • ret에 s를 unsigned char*형으로 형변환 시킨 주소를 저장하고, index가 n보다 작을 때까지 ret에 0넣기.

6. 구현 시 어려웠던 점

  • void 형을 왜 unsigned char 형으로 형변환하는지 이해가 잘 가지 않았음.

0개의 댓글