항상 헷갈린다.
C 개발자의 숙명이 아닐까?

몇번째인지 모르겠는데, 헷갈리는건 헷갈리는거다. 예전에는 머리가 잘 돌았는데, 이제는 그것도 잘 안된다.
각설하고,  인자로 넘길 때의 예제를 한 번 보자.

void inputfunction(int a, int* p, int& r)
{
   a = 1;
   *p = 2;
   r = 3;
}

요넘은 인자로 세 가지 타입을 받는 함수이다.
얘를 불러서 각각의 값을 넣은다음에 불러서 호출하면 어떻게 될까?

int a, b, c;
a = b = c = 0;

intputfunction(a, &b, *&c);

inputfunction(a, &b, c)
printf("a = %d, b = %d, c = %d\n", a, b, c);

정답은??

..
..

a = 0, b = 2, c = 3 가 나온다.
왜그럴까 왜그럴까???
글구 함수의 세 번째 인자는 왜 *&c라고 넣어야 하는가?
함수의 세 번째 인자는 왜 c 라고 넣어야 하는가?
이런거 생각하는게 재미있을수도, 지겨울 수도 있지만, 당신이 적어도 개발자를 숙명으로 삼아야 한다면, 생각해 보라.

음.. 위의 코드는 굉장히 위험하다라는.. 사실 제대로 알지 못하고 올린 속죄의 의미로 줄 그어놓은 것을 그대로 놔둔다.
왜 저당시에는 저렇게 글을 썼을까나.. ㅋㅋㅋ 어쨌든 제대로 코드 올린다

Posted by hopi
,