인수 전달이 있는 함수의 정의와 호출을 예시를 통해 바로 이해해보자.

 

#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable: 4996)
#pragma warning(disable: 6031)

void f_line(char ch, int n);   // 함수 원형 선언

int main()                    // main 함수 정의
{ 
	int length = 10;          // main 함수의 지역 변수 선언 

	f_line('>', 5);         // '>'를 5개 출력하도록 함수 호출 
	f_line('-', length);
	f_line('<', length + 5);

	return 0;
}

void f_line(char ch, int n)    
{
	int i;

	for (i = 0; i < n; i++)
	{
		printf("%c", ch);
	}
	printf("\n");

	return;
}

 

 

여기서 보면 void f_line(char ch, int n)을 확인할 수 있을 것이다. 

이게 어찌보면 가장 중요한데 함수의 원형 선언을 할 때도 이렇게 매개변수를 설정해줘야 하고

밑에서 함수를 구성할 때도 꼭 들어가야하는 것이다. 

 

 

주의

  • 매개변수는 함수의 지역 변수이며, 호출되면 함수 헤더에서 바로 인수를 저장하는 데 사용되므로 ( ) 안에서 선언해야한다.
  • 매개변수는 무조건 개별적으로 선언해야한다. (int a, b는 오류!!!, >> int a, int b로 해야한다.)
  • 인수와 매개변수는 개수, 자료형, 순서가 같아야한다.
  • 함수 안에서 선언한 지역 변수는 함수 안에서만 유효하므로 인수와 매개변수의 이름은 서로 연관이 없다.

       >> 인수명과 매개변수명이 같아도 서로 다른 기억장소를 사용하는 다른 변수 즉, 동명이인에 해당한다. 

       >> 서로 다른 함수들은 서로의 정보를 알 수 없다. (라고 생각!)

 

 

인수 전달과 반환값이 있는 함수의 정의와 호출

#include <stdio.h>
#pragma warning(disable: 4996)
#pragma warning(disable: 6031)

int f_smaller(int n1, int n2);

int main()
{
	int s1, s2, s3, min;

	printf("점수1 점수2 점수3? ");
	scanf("%d %d %d", &s1, &s2, &s3);

	min = f_smaller(s1, s2);
	min = f_smaller(min, s3);

	printf("%d, %d, %d 중 가장 낮은 점수는 %d", s1, s2, s3, min);

	return 0;
}

int f_smaller(int n1, int n2)
{
	int min;

	if (n1 > n2)
	{
		min = n2;
	}

	else
	{
		min = n1;
	}

	return min;
}

 

 

begin ~ end까지의 합을 반환하는 함수

#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable: 4996)
#pragma warning(disable: 6031)

int get_sum(int begin, int end);

int main()
{
	int a, b;

	printf("[1] a ~ b 합 구하기\n");

	printf("a는? ");
	scanf("%d", &a);


	printf("b는? ");
	scanf("%d", &b);

	printf("\n%d~%d 합: %d", a, b, get_sum(a, b));

	printf("\n\n[2] a*2 ~ b*2 합 구하기\n");
	printf("\n%d~%d 합: %d", a*2, b*2, get_sum(a*2, b*2));

	return 0;
}


int get_sum(int begin, int end)
{
	int sum, i;

	sum = 0;
	for (i = begin; i <= end; i++)
	{
		sum += i;
	}

	return sum;
}

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

다양한 함수와 변수의 참조 범위  (0) 2024.05.30
문자열 처리  (0) 2024.05.28
인수 전달하지 않는 함수  (0) 2024.05.27
자료 배열 2 (9장)  (0) 2024.05.27
자료 배열 1 (8장)  (0) 2024.04.29

+ Recent posts