알버트의 개발하는 블로그
C 언어 / C++ 언어 제11강 함수 사용하기 (사용자 정의 함수 사용) 본문
이번 시간에는 C에서 제공하고 있는 아주 유용한 기능인 사용자 정의 함수에 대해서 배워보겠습니다.
프로그래밍은 함수를 사용하여 코딩이 진행되어집니다. C언어는 비쥬얼 스튜디오에서 메인'함수'를 통해서 코딩이 진행됩니다. 그리고 C나 C++이 제공하는 수많은 함수들이 많이 있습니다.
그리고 이런 함수를 잘 알고 사용하는 것은 프로그래밍에 큰 도움이 됩니다.
하지만, 우리 사용자들도 함수를 자기 입맛에 맞춰서 만들고 쓸 수 있답니다.
그것을 사용자 정의 함수라고 하는데요. 오늘은 간략하게 개념과 쓰는 방법만 배워보겠습니다.
사용자 정의 함수 쓰는 법
일단, 사용자 정의 함수의 형식은 이렇게 됩니다.
리턴타입 함수명 (매개변수, 매개변수, ....)
이렇게 되는데요. 리턴타입은 이 함수가 반환할 값을 무슨 타입으로 할지 정해줍니다.
그리고 함수명은 변수 이름 정하듯이 적어주시면 되고... 매개변수가 중요한데요. 매개변수는 함수에서 쓰이게 될 값들을 적어줍니다. 만약, 두개의 정수를 입력받아서 계산해야한다면 매개변수는 2개가 필요합니다.
이처럼 매개변수는 필요한만큼 선언하면 됩니다. 만약 필요없다면 매개변수를 안적어도 된답니다.
그러면, 간단하게 사용자정의함수를 써보겠습니다.
사용자 정의 함수 예제
대표사진 삭제
사진 설명을 입력하세요.
sum이란 이름으로 사용자 정의함수를 만들었습니다.
main함수에서 입력받은 x와 y를 sum함수로 처리해준 것을 볼 수 있습니다.
입력받은 x와 y를 sum함수안에서 처리해주는데요. sum함수 안의 매개변수 a와 b의 자리에 x와 y가 들어갔다는 것을 알 수 있습니다.
사용자정의함수의 순서를 보면 이와 같습니다.
대표사진 삭제
사진 설명을 입력하세요.
맨 먼저 sum(x,y)를 호출하면, 컴파일러는 sum함수를 인식하여 sum함수의 헤더로 들어갑니다. 그래서 a와 b의 자리에 x와 y를 넣고 sum함수를 처리해줍니다. 실질적인 계산은 함수의 몸통에서 이루어집니다.
즉, 함수 호출 > 함수 헤더 > 함수 몸통 > 리턴값 반환
이렇게 된다는 것을 알 수 있습니다. 여기서 리턴값은 a와 b를 더한 c가 됩니다. 그래서 맨 마지막에 c가 출력될 수 있도록 하는 것입니다.
한번 실행해볼까요?
대표사진 삭제
사진 설명을 입력하세요.
이처럼 41과 59를 입력해주면 두 정수의 합인 100이 출력되는 것을 알 수 있습니다.
그러면, 이 원리를 이용해서 두 정수를 입력받아서 곱을 출력해주는 함수를 만들 수 있겠죠?
한번 만들어볼까요?
대표사진 삭제
사진 설명을 입력하세요.
두 정수를 입력받아서 곱을 구해주는 multi함수를 만들어주었습니다. 어떤가요? 원리만 알면 쉽게 만들어 쓸 수 있겠죠?
앞에서 만들었던 sum함수와 multi함수가 잘 사용된 것을 알 수 있습니다. 이 상태에서 실행해보겠습니다.
대표사진 삭제
사진 설명을 입력하세요.
짜잔~ 정수 100과 50을 입력시켜주었습니다. 그랬더니 두 정수의 합인 150과 곱인 5000이 출력된 것을 알수있습니다.
이처럼 사용자 정의 함수는 프로그래밍에 있어서 반드시 필요하고 많이 쓰이는 기법 중에 하나입니다.
나중엔 이 함수들을 하나로 묶어서 헤더파일에 갖다놓고 쓰기도 한답니다! 나중에 배워보도록 할게요 ㅎㅎ
읽어주셔서 감사합니다. 모두 열공하세요~
'프로그래밍 언어 > C & C++' 카테고리의 다른 글
C 언어 / C++ 언어 제13강 랜덤 난수 이용하여 주사위 눈 세기 (srand 함수, rand 함수, time 함수) (0) | 2021.04.29 |
---|---|
C 언어 / C++ 언어 제12강 메모리 동적 할당 하여 배열 출력하기 (malloc 함수, 메모리 동적 할당) (0) | 2021.04.29 |
C 언어 / C++ 언어 제10강 비쥬얼 스튜디오 콘솔창 유지하기 (실행화면 유지) (0) | 2021.04.29 |
C 언어 / C++ 언어 제9강 기본 1차원 배열 (0) | 2021.04.29 |
C 언어 / C++ 언어 제8강 for 반복문 이용해서 피라미드 출력하기 (중첩 반복문) (0) | 2021.04.29 |