[C] 반환형과 매개변수

성채원·2024년 3월 22일

이건 봐도봐도 헷갈려서 자주 써야한다..
개인적으로 자바에서도 그렇고 '리턴'한다는 개념이 헷갈린다. 그냥 자주 쓰고 많이 보는 것밖에 답이 없다.

반환형과 매개변수가 없는 함수는 반환형과 매개변수에 void를 써준다.

#include <stdio.h>

int main(void) { // 반환형이 아닌 매개변수가 void이기 때문에 return을 쓸 수 있는 것.
	start(); // 함수의 호출, 반환형과 매개변수 가지지 않기 때문에 '함수명()' 이렇게 호출해야한다.
    printf("Program End");
    
    return 0;
}

void start(void) { // 반환형과 매개변수에 void를 작성하면 된다. 대신 return을 사용할 수 없음
	printf("Program Start\n");
}

1) 프로그램은 항상 main부터 시작
2) start() 호출
-> start를 호출할 때 start 함수로 가준다. 리턴형이 없고 void를 사용하였으므로 리턴값이 없다. 위 코드에서도 return "Programe Start"(이 형태는 있을 수 없다. 설명을 위해 쓴거다) 가 아니고 print 함수를 써줬다.

반환형은 없지만 매개변수가 존재하는 함수는 return만 안 써주면 된다. 그냥 printf만 써주기!!

#include <stdio.h>

void bang(int x);

int main(void) {
	int x;
    
    printf("x를 입력하세요: ");
    scanf("%d", x);
    
    bang(3);
    bang(x);
    bang(x*2);
    return 0;
}

void bang(int x) {
	int y;
    
    y=2*x+1;
    printf("x가 %d일 때, y=%d \n", x, y);
}

void가 아닌 반환형은 '값'을 return하는 것이구나!!!```

반환형이 존재하고 매개변수가 없는 함수

#include <stdio.h>

int multi(void);

int main(void) {
	int num;
    
    num=multi();
    printf("결과: %d\n", num);
    
    return 0;
}

int multi(void) {
	int a, b;
    
    printf("데이터1 입력: ");
    scanf("%d", &a);
    printf("데이터2 입력: ");
    scanf("%d", &b);
    
    return a*b;
 }

multi 메소드를 보면 매개변수가 void로 존재하지 않고 반환형은 return a*b로 존재한다. scanf 함수에서 a와 b값을 각각 받은 후에 이 둘의 곱을 리턴한다. 다시 multi함수를 호출한 main함수로 가면 리턴값을 다시 num에 넣어주어 결과적으로 200을 출력하게 되는 것이다!

반환형과 매개변수가 존재하는 함수

#include <stdio.h>

int add(int num1, int num2);

int main(void) {
	int sum;

    sum=add(3, 2);
    printf("3 + 2 = %d\n", add(5,10));
    
    return 0;
 }
 
 int add(int num1, int num2) {
 	int sum;
    
    sum=num1+num2;
    
    return sum;
 }

반환형과 매개변수 모두가 존재하는 함수 형태를 많이 봤었다. 이 함수가 딱 함수에만 있는 변수를 사용해서 깔끔하게 계산해주기 때문이다. 또 값은 호출해준 함수에서 지정해줬기 때문에 다양한 값들을 함수에 넣고 돌려볼 수 있다.
위 코드를 보면 add 함수를 호출해주고 add 함수에 전달할 값을 지정해주었다. add 함수를 호출할 때 add 메소드로 가서 num1=3, num2=2로 잠정대입해주어 sum을 계산해주고 이를 또 리턴해준다. 이 함수의 특징은 원하는 때에 원하는 값을 넣어서 리턴 값만 깔끔하게 호출해준다는 장점이 있다.


이렇게 반환형과 매개변수에 대해 공부해봤다. 반환형보다는 함수에 관한 내용도 함께 공부할 수 있었다. 개인적으로 본인은 함수를 잘 사용하지 않고 main 메소드 내에서만 모든 것을 해결하려고 해서 코드도 복잡하고 로딩시간이 오래 걸린 적이 많았다. 하지만 매개변수와 함수의 특성에 대해 더 잘 알게 되어 깔끔한 코드를 짤 수 있을 것 같다.

0개의 댓글