온백의 코딩 블로그

온백의 비밀 기록방

Diary/코딩 잡 지식

코딩 'C언어'에서 "함수" 사용법 쉽게 알려드립니다! - 함수 겉핥기

온백 hundred_100 2023. 2. 28. 00:53

안녕하세요, 온백입니다.
 
이게 올해... 세 번째 글이네요..ㅋㅋ
(이제 더 열심히 활동하겠습니ㄷ)
 
전 예전에 네이버 블로그에서 활동하다가 티스토리로 옮겼는데요,
가족들이랑 (퇴물이기 전에) 알고 지냈던 많은 블로거 분들이랑 아직 소통 중이라
말만 블접이지 사실 '반블접'에 더 까가운 상태입니다.
 
어쨌든..! 최근에 어떤 블로거에게 C언어를 가르쳐 드렸는데요..
아직 초보자라 정말 기초 중 기초 ("Hello, World!" 출력 등)만 가르쳤는데,
그 중 함수에 대해 약간 짧게 가르쳤습니다.
 
아마 처음에는 함수에 대해 이해하기 힘들겁니다.
(제가 학원에 있을 때는 아예 함수 개념 자체를 정~말 얇게 배워서 이해가 잘 안됐었고요....)
 
그런데 아직 코딩을 잘하는 사람은 아니지만
코딩을 할 때 함수에 대한 기본적인 개념은 알아야한다고 생각합니다.
 
서론이 너무 길었군요.. 바로 본론으로 넘어가 보도록 하겠습니다.
 


 

'함수' 란?   - 기본적인 함수의 개념

 
이 부분은 많은 분들이 알고 계실겁니다.
그러나 함수 자체를 모르시는 분들을 위해 설명하자면,
 
기본적으로 함수는 '값을 넣으면 그 값을 어떤 식들을 거쳐 반환하는 것'입니다.
사실 이건 그림을 보면 쉽게 이해가 가능하죠.
 

함수 이해를 돕기 위한 그림

 
그림에서 보이듯이 어떤 값(a)를 함수에 넣으면

그 값을 이용하여 어떤 식들을 거치고 (여기서는 예시로 4를 더하게 해봤습니다)그 값을 반환합니다.

 

그래서 예를 들어 a가 5라고 했을 때a(5) + 4 = 9가 반환되는 거죠.

 

만약 식이 a + 4가 아니라 '5 - 4 x a +3' 이라고 하면,만약 a의 값이 9일 때,5 - 4 x 9 + 3이 되고, 그 값은 -28이 되는겁니다!

 

C언어에서 함수 사용법

 

우리도 모르게 사용하고 있는 함수

 
C언어에서 프로그래밍 할 때 꼭 처음에 기본적으로 하는 것이 있습니다.
C언어를 조금이라도 해봤다면 다들 아실겁니다.
 

#include <stdio.h>

int main() {


    return 0;
}

 
꼭 프로그래밍을 할 때 "int main" 안에다가 쓰죠.
 

또 처음 코딩할 때 꼭 짜보는 코드가 있습니다.

 

// "Hello, World!" 출력하기

#include <stdio.h>

int main() {
    printf("Hello, World!");
    
    
    return 0;
}

 
바로 "Hello, World" 출력하기죠.
근데 여기서 사용하는 int main()이랑 printf()가 '함수'라는 사실, 아셨나요?
 

함수의 모양   - 함수 만들기

 
함수는 프로그래머가 만들 수 있습니다.
코드를 더 깔끔하고, 효율적으로 만들 때 많이 사용하죠.
 

[자료형] [함수 이름]([함수에서 받을 값]) {
    [코드]
    
    
    return (반환할 값)	// "return N"은 값을 반환할 때 사용한다.
 }

 
아까 위에서 봤던 사진이랑 별 다를 게 없습니다.
 
int main을 예로 들자면,
 

int(자료형) main(함수 이름) (받을 값) {
    코드
    
    
    return 반환할 값;    // 하나의 값을 반환합니다
}

 
이렇습니다!
사실 코딩에서 함수에서는 꼭 어떤 값을 넣어줄 필요는 없답니다...!
 
그러면 이제 한 번 정수 타입의 a와 b의 값을 받아
a + b를 반환하는 함수 "plus"를 만들어 봅시다.
 

int plus(int a, int b) {	// 불편하지만 각 값을 받을 때는 각자 따로 자료형을 설정 해야합니다
    int result = a + b;
    
    return result;
}

(위에선 코드 설명을 위해 result 변수를 만들었지만, 사실 다 없에고 return a + b해도 문제 없습니다 ㅎㅎ
아무도 두 값을 더하기 위해 함수까지 만들지 않는다는 건 아시죠? ㅎㅎ 그냥 예시를 든 것 뿐입니다!)
 
plus라는 변수를 선언하고, a와 b를 받은 후, 그 값으로 a + b를 하여 result 변수에 저장하였습니다.
result는 a + b를 한 값이므로 result를 반환하는 코드입니다.
 
그런데 잠깐..! 여기서 자료형은 무슨 역할일까요?
그건 '반환할 값의 타입'을 설정하는 겁니다!
 
저희는 '정수형' a와 b를 주었으므로, '정수형'으로 출력을 줘야합니다.
그래서 함수 앞에 int를 붙여 정수형으로 값을 반환한 겁니다.
 

함수 호출 & 값 보내주기

 

이제 함수까지 잘 만들었습니다!

그런데 문제가 있습니다. 그 값을 어떻게 넣어줘야 할까요?
아까 만들었던 "plus()"함수를 예로 들어 설명해 드리겠습니다.
 
 
일단 함수를 실행시키려면 그 함수를 '호출' 시켜야 합니다
그러면 그 함수를 어디서 호출 시킬까요? 다른 함수에서 호출시킬 수 있습니다.
 
이게 무슨 소리일까요? 함수를 호출시키기 위해서는 다른 함수가 필요하다니,
그러면 함수 자체가 실행이 될 수 없지 않을까요?
 
그걸 알기 위해선 main함수와 다른 함수들의 차이에 대해 알아야 합니다.
main함수는 모든 함수 중 가장 기본이 되는 함수로, 코드를 실행시킬 때 그 함수를 먼저 실행시키죠.
다른 함수는 자신이 호출되기 전까진 실행이 되지 않습니다.
 
즉, 함수를 실행시키기 위해선 main함수에서 호출을 시키면 됩니다!
 
그렇다고 모든 함수를 main함수에서만 호출시킬 수 있는 건 아니에요!
다른 함수 안에서도 호출이 가능하죠.
 
 
함수를 호출하는 방법은 이렇습니다.
 

[함수 이름]([넣을 값]);

 
plus()를 예로 들자면
 

plus(값1, 값2);

 

이렇게 되야하는거죠.
 
그러면 main함수에서 i, j의 값을 입력받아 두 개의 값을 더해 출력하는 코드를 짜보도록 합시다.
 

#include <stdio.h>

int plus(int a, int b) {
    return a + b;
}

int main() {
    int i = 0, j = 0;
    
    scanf("%d %d", &i, &j);
    
    int result = plus(i, j);
    
    printf("%d", result);
    
    
    return 0;
}

 
아마 함수에 대한 이해가 잘 됐다면 위에 코드가 바로 이해될 것입니다.
i, j를 입력받은 후, 그 값들을 plus에 a와 b에 옮긴 후.
반환된 값을 result라는 변수에 저장하고, 그걸 출력합니다.
(사실 result 변수에 저장하지 않고 바로 출력시켜도 작동은 된답니다!)
 

printf()는 어디에 있지?   - 헤더파일

 
위에서 'printf()도 함수다' 라고 했던 거 기억나시나요?
printf()도 소괄호 안에 값을 받고 이런 저런 과정을 통해 창에 값을 출력시키도록 되어있는 함수입니다!
그런데.. 이 함수는 과연 어디에 숨어있을까요?
 
꼭 코딩하기 전에 #include <stdio.h> 쓰시는 것이 궁금하지 않으셨나요?
그것이 바로 '헤더파일'이라는 것을 불러오는 코드인데, ;헤더파일'이라는 것 안에 함수가 있습니다.
 
헤더파일에 대해 짧게 설명하자면,
함수들을 여러 코드에서도 재사용하고 싶을 때 함수들을 저장시켜주는 파일입니다!
 
이 파일은 기본적으로 만들어져있는 파일들이 있고, 프로그래머가 만들 수도 있는데.
printf()라는 함수는 stdio라는 헤더파일 안에 미리 선언이 되어있어
그 함수를 가져와 사용할 수 있는겁니다!
 


 
이렇게 함수에 대한 설명을 마치겠습니다!
끝까지 읽어주셔서 감사하고, 질문해주시면 아는 선에서 대답해드리겠습니다!
 
감사합니다
 


 
2023.01.13 - [Note/Unreal Engine] - 언리얼 엔진 자습 해보고 싶은데.. 언리얼 엔진 무료 자습 사이트 추천!
 
2022.12.04 - [Diary/코딩 잡 지식] - C/C++ 프로그래밍은 어디서 하나요? / Visual Studio IDE 깔아보기!
 
2022.12.04 - [Diary/코딩 잡 지식] - VS(Visual Studio)와 VSCode(Visual Studio Code) 차이가 뭐야? / VS와 VSC 차이 알아보기!

반응형