Libft의 Bonus 과제의 함수들의 프로토타입을 살펴보자.

Libft의 Bonus에서는 링크드리스트를 다루게 된다. 제목과 관련하여 아래의 프로토타입을 잘 살펴보자. lst로 주어지는 파라미터의 type에 어떤 것은 포인터, 어떤 것은 더블포인터이다. 그 이유에 대해서 생각해 본적이 있는가?

Libft의 Bonus 과제의 프로토타입들

Libft의 Bonus 과제의 프로토타입들

더블포인터이여야만 할까?

ft_lstadd_back 함수에 대한 필자의 구현은 아래와 같다. 너무 당연한 코드의 형태이다. 여기서 제목에 대한 의문점을 떠올려보자. 파라미터 lst의 타입이 t_list *lst이여도 괜찮을까?

정상코드

정상코드

* 하나만 빼면 되잖아?

아래와 같이 코드를 수정해보자. lst에 붙은 * 하나씩만 제거했다. 타입도 모두 맞고, 왠지 동작이 될 것 같은 느낌이 든다. 당연히(?) 제대로 동작하지 않는다.

비정상코드

비정상코드

Piscine의 기억을 되살려보자.

Piscine에서 포인터를 다루는 방법을 익히는 것

이 목적인 초반 과제 swap함수를 기억하나요? swap함수의 동작을 복기해 봅시다.

swap 함수는 2 개의 int형 포인터를 받아, 역참조를 통해 a 와 b의 값을 바꾸는 함수입니다.

swap 함수

swap 함수

change_to_42함수를 구현하실 수 있나요?

swap 함수를 통해 a와 b의 값을 변경한 것처럼, 파라미터로 넘겨준 c의 값을 42로 변경하는 change_to_42함수를 주어진 프로토타입형태로 구현하실 수 있나요?