본문 바로가기

프로그래밍 언어/C언어

C언어 - 사용자 정의 함수 (최종)

아래의 코드를 살펴보고 문제점을 찾아보자.

 

#include <stdio.h>

void add(int a, int b) {
    int c;
    c = a + b;
    printf("%d", c);
}
    
int main() {
    int a;
    int b;
    
    a = 2;
    b = 3;
    
    add(a, b);
}

 

코드를 실행했을 때 컴파일 오류가 발생했을 것이다.

 

코드를 고치면서 차근차근 오류를 수정해보자.

 

우선 출력함수를 main() 에서 시도해보자.

 

#include <stdio.h>

void add(int a, int b) {
    int c;
    c = a + b;
}

int main() {
    int a;
    int b;
    
    a = 2;
    b = 3;
    
    add(a, b);
    print("%d", c);
}

 

더하기 결과 출력을 함수 밖에서 하여도 컴파일 오류가 난다.

 

main에 c가 선언되어있지 않기 때문에 c를 선언해주자.

 

#include <stdio.h>

void add(int a, int b) {
    int c;
    c = a + b;
}

int main() {
    int a;
    int b;
    int c;
    
    a = 2;
    b = 3;
    
    add(a, b);
    print("%d", c);
}

 

컴파일은 되지만 5가 아닌 이상한 값이 출력되었다.

 

근본적인 이유는 add()에 있는 c와 main()에 있는 c가 서로 다르다.

 

그래서 c를 출력하더라도 add에 있는 계산 값을 받아오지 못하기에

 

c에는 이상한 값이 출력된다.

 

 

그러므로 return을 이용하여 add()에 있는 c를 main()에 있는 c에게 반환해주도록 하자.

 

#include <stdio.h>

int add(int a, int b) {
    int c;
    c = a + b;
    return c;
}

int main() {
    int a;
    int b;
    int c;
    
    a = 2;
    b = 3;
    
    c = add(a, b);
    print("%d", c);
}

 

변경한 부분을 살펴본다면,

 

 

 

 

 

https://book.naver.com/bookdb/book_detail.nhn?bid=8187381

'프로그래밍 언어 > C언어' 카테고리의 다른 글

C언어 - 아스키코드  (0) 2021.01.19
C언어 - 타입캐스팅 typecasting  (0) 2021.01.15
C언어 - 매개변수  (0) 2021.01.13
C언어 - 사용자 정의 함수 (기본편)  (0) 2021.01.12
C언어 - switch문  (0) 2020.08.17