scanf("%d", &i); 이렇게 쓰던데
포인터를 배우다보니 좀 헷갈리기 시작했어요
변수 앞에 &기호가 붙으면 그 변수의 주소를 의미한다던데 그 의미대로라면 i의 주소에 내가 입력한 값을 집어넣는다?
뭔가 이해가 안됩니다. 제가 잘못 이해한걸까요 아니면 포인터에서의 &기호와 scanf함수에서의 &기호를 다르게 받아들여야 할까요
scanf("%d", &i); 이렇게 쓰던데
포인터를 배우다보니 좀 헷갈리기 시작했어요
변수 앞에 &기호가 붙으면 그 변수의 주소를 의미한다던데 그 의미대로라면 i의 주소에 내가 입력한 값을 집어넣는다?
뭔가 이해가 안됩니다. 제가 잘못 이해한걸까요 아니면 포인터에서의 &기호와 scanf함수에서의 &기호를 다르게 받아들여야 할까요
함수에 변수든 값이든 뭔갈 인자로 넘기면 그 값만 넘어가는 거다. 다시 말해 scanf("%d", i); 이렇게 하면 i라는 변수가 넘어간 게 아니라 i의 값 자체를 함수로 넘긴 거라 i 변수에 접근이 안되지. 고로 &i 처럼 i 변수의 주소 값을 구해, 그 주소 값을 넘겨 주어야 함수 안에서 그 변수를 찾아갈 수 있지.
이요->이오(요)
아 그러니까 scanf 함수의 경우에는 입력받은 값을 'i의 주소'에 쓰는 것이기 때문에 i의 주소를 인자로 넘겨야 된다는 말이네요 이해가 됐어요 감사합니다.