본문으로 바로가기

우리는 흔히 scanf함수를 사용할 때 변수앞에 주소연산자(&)를 붙인다. 왜일까?


그 이유를 알아보기 위해 먼저 scanf 함수의 원형부터 찾아보자


int scanf(const char *format, [address…]);


이것이 scanf 함수의 원형이다. int(정수)형으로 반환값을 받도록 되어있고, 인자로 char(문자)형 포인터인 포맷과 주소를 받고있다.


여기서 이 주소! address라는 말뜻처럼 두번째 인자로 주소값을 받는다. 왜?


바로 저번에 배웠던 call by reference 때문이다. scanf는 변수의 값을 변경시키기 위해서 주소값을 통해 변수 메모리에 접근한다.


그렇기 때문에 scanf함수를 사용할 때 주소연산자(&)를 통해 변수의 주소를 알려주어야 한다.