달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

이전부터 printf 인자에는 변수명(a),

scanf 인자에는 변수의 주소(&a)가 들어간 이유가 궁금했었다.

 

by Rajiv's View. all right reserved

 

 

함수와 포인터를 공부하면서 나름의 추리를 해 보았다.

아래 코드를 보자.

즉, newvalue함수는 메인에 있는 a의 주소가 필요없다. 다만 그 값만 필요하므로, 값 참조만 하면 된다. 따라서 호출 시 인자가 변수이름 이다.

printf함수 역시 a의 '값'만 출력하면 되므로 a의 주소는 필요가 없다. 따라서 호출시 인자가 변수이름 이다.

 

반대로, change함수는 a에 값을 대입하고자 한다. 따라서 인자로 &a의 주소가 필요하다.

마찬가지 이유로 scanf 함수 역시 인자로 &a의 주소가 필요하다.

 

 

 

 

 

 

Posted by C언어 보이
|