caller: A

callee: B

하는 일: A는 A4 한 장을 갖고 있고, B가 A에게 안녕이라고 써줌


1. writehello(size papersize)

B가 요구하는 것: 종이의 크기

A가 writehello(A4)를 호출

B는 A4용지 하나를 꺼내 안녕이라고 써서 돌려줌

A가 갖고있던 종이에 복사하지 않는 이상 당연히 변화 없음


2. writehello(Paper& paper)

B가 요구하는 것: 종이 한 장

A가 writehello(my_A4)를 호출

A는 B에게 자신의 A4를 빌려줌

B는 받은 종이에 안녕이라고 써서 돌려줌

A가 갖고있던 종이의 상태가 변함


3. writehello(Paper *paper)

B가 요구하는 것: 종이의 위치

A가 writehello(&my_A4)를 호출

A는 B에게 위에서 두번째 서랍에 있는 종이에 써달라고 요청

B는 해당 서랍을 열어 안녕이라고 써둠

실제로 종이를 전달하지는 않았지만 A가 가진 종이의 상태가 변함




1번은 사실 자기가 갖고 있는 종이에 써준다고 할랬는데 그러면 writehello(void)가 돼버려서 어거지로 끼워맞춤