사용자 정의 함수
반복적으로 작성하는 코드를 함수로 만들면 코드를 간결하고 이해하기 쉽게 만들 수 있다.
"cough"를 세 번 출력하는 프로그램을 작성해보자.
#include <stdio.h>
int main(void)
{
printf("cough\n");
printf("cough\n");
printf("cough\n");
}
반복문을 사용하면 더 간결해진다.
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 3; i++)
{
printf("cough\n");
}
}
이제 함수를 만들어보자.
void cough(void)로 함수를 정의한다. main 함수에서 cough()를 호출하면 우리가 정의한 대로 동작한다.
#include <stdio.h>
void cough(void)
{
printf("cough\n");
}
int main(void)
{
for (int i = 0; i < 3; i++)
{
cough();
}
}
함수 선언 위치
함수가 여러 개면 main 함수가 아래로 내려간다. 중요한 main 함수는 위에 있는 게 좋다.
그렇지만 main을 위로 올리고 cough를 아래로 내리면 오류가 발생한다. C는 아래에 함수가 있을 거라 예상하지 못하기 때문이다.
해결 방법은 함수 선언을 위에 추가하는 것이다.
#include <stdio.h>
void cough(void);
int main(void)
{
for (int i = 0; i < 3; i++)
{
cough();
}
}
void cough(void)
{
printf("cough\n");
}
이렇게 void cough(void);를 위에 선언하면 컴파일러가 함수의 존재를 미리 알 수 있다.
매개변수 사용
원하는 횟수만큼 출력할 수 있도록 함수를 개선해보자.
#include <stdio.h>
void cough(int n);
int main(void)
{
cough(3);
}
void cough(int n)
{
for (int i = 0; i < n; i++)
{
printf("cough\n");
}
}
매개변수 n을 받아 n번 반복한다.
중첩 루프
마리오 게임처럼 #을 가로세로로 출력해보자.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int n;
do
{
n = get_int("Size: ");
}
while (n < 1);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("#");
}
printf("\n");
}
}
do { ... } while(n < 1)은 조건과 상관없이 최소 한 번은 실행된다.n이 1 이상이 될 때까지 입력을 받는다.- 첫 번째
for루프는n번 반복하며 줄을 생성한다. 내부 루프는 한 줄에#을n번 출력한다. 내부 루프가 끝나면 줄바꿈(\n)을 한다. - 결과적으로 가로
n개, 세로n개의#이 출력된다.
연습 문제
Q. 사용자 정의 함수를 사용하는 것의 장점은?
- 코드 재사용성: 반복되는 코드를 함수로 만들어 재사용
- 가독성 향상: 함수 이름으로 코드의 목적이 명확해짐
- 유지보수 용이: 한 곳만 수정하면 모든 곳에 적용됨
- 오류 감소: 코드 분리로 오류 가능성 감소
- 모듈화: 시스템의 확장성과 유연성 향상
'TIL' 카테고리의 다른 글
| [CS50] 컴파일링 (0) | 2025.11.05 |
|---|---|
| [CS50] 하드웨어의 한계와 오버플로우 (0) | 2025.11.05 |
| [CS50] C 언어 - 자료형과 연산자 (0) | 2025.11.05 |
| [CS50] C 언어 - 조건문과 루프 (0) | 2025.11.05 |
| [CS50] C 언어 - 문자열 (0) | 2025.11.05 |
