string 관련 함수에서는 마지막에 '\0' 꼭 넣어준다.unsigned char 는 부호비트가 없기 때문에 모든 bit를 투명하게 볼 수 있다.unsigned char를 사용한다.unsigned int 대신 size_t 를 사용한다.const 로 선언된 변수는 값을 변경할 수 없고 변경시 컴파일 에러가 뜬다.*restrict 는 특정 메모리 영역에 접근 할 수 있는 포인터가 단 하나임을 보장하는 키워드이다.void 포인터 는 자료형이 정해지지 않은 특성 때문에 어떤 자료형으로 된 포인터든 모두 저장할 수 있다.static 으로 선언한다.static 으로 선언한 함수는 해당 소스파일에서만 사용이 가능하므로 다른 파일의 함수이름과 겹칠 일을 방지한다.free를 해준 다음, 포인터에 NULL을 할당한다.typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
content : 요소에 포함된 데이터. void * 를 통해 어떠한 자료형의 값도 담을 수 있다.
next : 다음 요소의 주소값. 만약 해당 요소가 마지막 요소라면, NULL을 가리킨다.
t_list : 구조체 별칭.
!lst : 리스트 자체가 존재하지 않음을 의미한다.!(*lst) : lst의 첫번째 주소를 의미 리스트 내에 노드가 존재하지 않다는 뜻이다.