안녕하세요. 함수의 매개변수에 대해 알아봅시다.
저번에 함수를 소개하는시간에 언급됐었습니다.
이 hello라는 함수가 있는 코드를 짜봤습니다.
위 코드의 hello함수에서 int형을 변수를 한개 받고있습니다.
hello함수를 호출할때 보내주게 되는 값이 바로 인자고 함수에서 그 인자를 받고 선언되는것이 매개변수입니다.
위 코드에서는 5가 인자가되고 int num이 매개변수가 되는거죠.
그리고 5를 인자로 받은 함수는 int num에 5가 들어가있게되고 printf("%d, num);은 5를 출력하게됩니다.
매개변수는 아무것도 받지 않을수도 있고 여러개도 받을수 있습니다.
위와같이 매개변수가 들어갈 자리에 void라고 적어주시면 아무것도 받지 않게됩니다.
물론 void를 적어주지 않아도 아무것도 받지 않을수 있습니다.
하지만 void를 적은것과 안적은것에는 결정적인 차이가 있습니다.
void가 적혀있을경우에는 인자를 넘겨주면 컴파일에러가 납니다.
하지만 아무것도 적혀있지 않다면?
작동됩니다.
만약 A함수와 B함수가 있다고 해봅시다.
A함수는 아무 인자도 받지 않는함수고 B함수는 int형을 인자로 받는 함수입니다.
근데 프로그래머가 실수로 A함수를 호출해야되는데 B함수를 호출해버렸습니다.
그렇게됐을때 void가 있으면 컴파일에러가 나서 잘못됐다는걸 알고 바로 수정할수 있지만 void가 없을경우 정상적으로 컴파일은 되는데
버그가 발생해버립니다. 그리고 프로그래머는 그 버그가 어디서 난지 모르고 버그를 잡기 위해 야근하고 쓰러지겠죠.
이런 경우가 오기 싫다면 인자를 받지 않는 함수에는 확실히 void를 적어줍시다.
그리고 매개변수는 위와같이 작성하시면 여러개 받을수 있습니다.
위 코드에서는 두개만 받았지만 그 이상도 얼마든지 받을수 있습니다.
대신 매개변수가 5개라면 인자도 5개 넘겨줘야합니다. 그리고 첫번째로 넘겨준 인자가 첫번째 매개변수 자리에 들어갑니다.
그리고 매개변수도 함수에서 변수를 선언한것과 같이 함수 내에서 지역변수로 사용됩니다. 함수가 종료되면 사라지게 되는거죠.
'프로그래밍 > C 기초' 카테고리의 다른 글
[C언어 강좌] #23 - 식 (0) | 2016.12.29 |
---|---|
[C언어 강좌] #22 - 함수의 인자, 리턴 (0) | 2016.12.28 |
[C언어 강좌] #20 - 함수 호출과 흐름 (0) | 2016.12.26 |
[C언어 강좌] #19 - main함수 (0) | 2016.12.25 |
[C언어 강좌] #18 - 함수 (0) | 2016.12.24 |