항상 헷갈린다.
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 라고 넣어야 하는가?
이런거 생각하는게 재미있을수도, 지겨울 수도 있지만, 당신이 적어도 개발자를 숙명으로 삼아야 한다면, 생각해 보라.
음.. 위의 코드는 굉장히 위험하다라는.. 사실 제대로 알지 못하고 올린 속죄의 의미로 줄 그어놓은 것을 그대로 놔둔다.
왜 저당시에는 저렇게 글을 썼을까나.. ㅋㅋㅋ 어쨌든 제대로 코드 올린다