이전부터 printf 인자에는 변수명(a),
scanf 인자에는 변수의 주소(&a)가 들어간 이유가 궁금했었다.
by Rajiv's View. all right reserved
함수와 포인터를 공부하면서 나름의 추리를 해 보았다.
아래 코드를 보자.
즉, newvalue함수는 메인에 있는 a의 주소가 필요없다. 다만 그 값만 필요하므로, 값 참조만 하면 된다. 따라서 호출 시 인자가 변수이름 이다.
printf함수 역시 a의 '값'만 출력하면 되므로 a의 주소는 필요가 없다. 따라서 호출시 인자가 변수이름 이다.
반대로, change함수는 a에 값을 대입하고자 한다. 따라서 인자로 &a의 주소가 필요하다.
마찬가지 이유로 scanf 함수 역시 인자로 &a의 주소가 필요하다.
'C언어 업무보고' 카테고리의 다른 글
140328 02 문제 14-2 const 선언에 대한 이해(포인터 상수) (0) | 2014.03.28 |
---|---|
20140328 01 문제 14-1 값 참조와 주소 참조(call by value & call by reference) (0) | 2014.03.28 |
20140327 01 포인터 연산, 주소 1씩 증가시키기 (0) | 2014.03.27 |
20140326 02 스왑함수의 다른 형태(함수의 리턴값을 사용),swap,스왑 (0) | 2014.03.26 |
20140326 01 과일이름 출력, 반복문, 문자열,배열,포인터 배열 (0) | 2014.03.26 |