인수 전달이 있는 함수의 정의와 호출을 예시를 통해 바로 이해해보자.
#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 |