시작하기 전 필요한 정보들

  1. 복잡한 함수의 구현을 위해 내부함수를 사용할 경우 static으로 선언하는 것이 좋다.
  2. libft.h내에 구현해놓은 함수를 활용하여 문제를 해결하자!
  3. 함수이름을 자주 틀리니 man에서 복사해서 사용하자
  4. man을 활용하여 함수의 구현목적을 확인할 것
  5. 너무 광범위한 null체크는 하지 말것! 함수의 목적상(null값 입력시 세크멘테이션 폴트가 출력되어애 하는 경우가 있음)

part1은 libc(3) 표준 라이브러리 함수 구현이다.

파일디스크립터나 시스템콜 정보

void 포인터


C언어에서는 기본적으로 자료형이 다른 포인터끼리 메모리의 주소를 저장하면 컴파일경고가 발생한다.

`int main(void) { int a = 10; char b = 'b'; int *int_point = &a; char *char_point = &b;

int_point = char_point; // 오류발생

return 0; }`

warning: assignment from incompatible pointer type

하지만 void 포인터 사용시 어떤 자료형의 포인터든 모두 저장할 수 있다.

`int main(void) { int a = 10; char b = 'b'; int *int_point = &a; char *char_point = &b;

void *ptr;

ptr = int_point; // 오류가 발생하지 않음 ptr = char_point;

int_point = ptr; char_point = ptr;

return 0; }`

하지만 역 참조는 불가능 하다!

따라서 사용방법은 함수의 오버로딩 형식처럼 가변적인 포인터변수를 받아야 하는 함수들에 인자값으로 주로 사용된다.