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)가 돼버려서 어거지로 끼워맞춤
비유하지말고 걍 메모리로 설명하자ㅣ
레퍼런스 명쾌하게 메모리로 설명좀
비유가 이해에 도움이 됐다면 다행이지만 너무 장황하네 그냥 메모리주소 관점에서 설명해도 어려울 건 없는데...
첫번째 케이스를 비유를 위해 어거지로 끼워맞춰서 비유가 가진 한계를 스스로 증명했고