Libft의 Bonus에서는 링크드리스트
를 다루게 된다. 제목과 관련하여
아래의 프로토타입을 잘 살펴보자. lst로 주어지는 파라미터의 type에 어떤 것은 포인터
, 어떤 것은 더블포인터
이다. 그 이유에 대해서 생각해 본적이 있는가?
Libft의 Bonus 과제의 프로토타입들
더블포인터
이여야만 할까?ft_lstadd_back
함수에 대한 필자의 구현은 아래와 같다. 너무 당연한 코드의 형태이다. 여기서 제목에 대한 의문점을 떠올려보자. 파라미터 lst
의 타입이 t_list *lst
이여도 괜찮을까?
정상코드
*
하나만 빼면 되잖아?아래와 같이 코드를 수정해보자. lst
에 붙은 *
하나씩만 제거했다. 타입도 모두 맞고, 왠지 동작이 될 것 같은 느낌이 든다. 당연히(?) 제대로 동작하지 않는다.
비정상코드
Piscine에서 포인터
를 다루는 방법을 익히는 것
이 목적인 초반 과제 swap
함수를 기억하나요? swap
함수의 동작을 복기해 봅시다.
swap
함수는 2 개의 int형 포인터
를 받아, 역참조
를 통해 a 와 b의 값을 바꾸는 함수
입니다.
swap 함수
change_to_42
함수를 구현하실 수 있나요?swap 함수를 통해 a와 b의 값을 변경한 것처럼, 파라미터로 넘겨준 c의 값
을 42로 변경하는 change_to_42
함수를 주어진 프로토타입형태로 구현하실 수 있나요?