반응형
출처:
함수에서 넘겨받은 인자를 함수 내에서 처리한 후 다시 인자로 넘기는 작업을 했다.
void funA(int n) { n = 30; } int main() { int n = 10; funA(n); printf("%d\n", n); }
그러나 나의 예상과는 달리 printf()로 전달된 값은 30이 아닌 10이였다.
그래서 찾아보니 위의 함수는 값으로 전달하는 거라고 한다.
암만 함수 안에서 지지고 볶고 해봤자 인자의 사본이기 때문에 인자 자체의 값은 변경이 되지 않는다.
그렇기 때문에 이를 포인터로 전달하는 방법으로 바꿔야 한다.
이 함수의 경우 주소 연산자를 이용해 이 주소에 있는 값을 변경해달라고 하면
원하는 대로 30이 나올 것이다.
void funA(int *n) { n = 30; } int main() { int n = 10; funA(&n); printf("%d\n", n); }
예전에 책에서 봤는데 막상 직접 당해본 거랑은 다른 거 같다.
역시 뭐든 자기가 직접 해보는 게 최고인 거 같다.
반응형