함수 정의 : void 함수명 소괄호 중괄호
main 안에 함수를 정의할 수 없다.
#include <stdio.h>
void print_2_dan()
{
int dan = 2;
for (int i = 1; i <= 9; i++)
{
printf("%d * %d = %d\n", dan, i, dan * i);
}
}
int main()
{
print_2_dan(); //함수 실행
}
F5 눌렀을 때 실행되는 순서
1. 메인함수
2. print_2_dan(); 함수 실행
3. print_2_dan 함수가 정의된 곳으로 이동
4. 해당 함수 내부에 있는 로직을 한번 실행!
함수의 특징
1. 함수는 정의해야만 사용이 가능하다. - void 함수명 소괄호 중괄호
2. 함수는 정의했으면 실행을 해야 한다.
3. 함수를 정의할 때 동일한 이름의 함수를 정의해서는 안 된다.
매개변수
위 처럼 구구단 함수를 만들고 싶은데 모든 단마다 각각 숫자를 선언해줘야 하기 때문에 활용하기에 번거로움이 있다.
print_dan() 의 괄호 안에 숫자를 넣어서 몇 단인지 바꿀 수 있게 할 수 없을까.
그런데 이미 함수의 정의에서 변수가 선언되어 있어서 값이 고정되어 있다.
이럴 때 매개변수를 사용할 수 있다.
void print_dan (int dan)
매개변수 : 함수 안쪽 공간과 함수 바깥쪽 공간을 연결시켜주는 매개역할을 한다고 해서 매개변수라고 부른다.
print_dan(4); // 인자값(argument)
#include <stdio.h>
void print_dan(int dan) // 매개변수
{
for (int i = 1; i <= 9; i++)
{
printf("%d * %d = %d\n", dan, i, dan * i);
}
}
int main()
{
print_dan(2); //함수 실행
print_dan(5);
print_dan(7);
print_dan(8);
}
매개변수를 늘릴 수도 있다. 이런식으로 유연하게 함수를 사용 가능하다.
#include <stdio.h>
void print_dan(int dan, int limit) // 매개변수
{
for (int i = 1; i <= limit; i++)
{
printf("%d * %d = %d\n", dan, i, dan * i);
}
}
int main()
{
print_dan(2,10); //함수 실행
print_dan(5,11);
print_dan(7,13);
print_dan(8,15);
}
지역변수
지역 안쪽에서 쓰는 변수를 지역변수라고 한다.
- 일반지역변수 : 함수 지역 내에서 변수의 값이 정해진다.
- 매개변수도 지역변수이지만, 일반지역변수와는 다르게 함수 외부에서 값이 결정된다.
- 함수 실행시 넘겨준 인자값에 의해 매개변수 값이 결정됨.
- 지역변수는 함수 실행시 만들어지고, 함수가 종료되면 지역변수 또한 사라진다.
* 다른 함수의 지역 내에 만들어진 변수는 이름이 같아도 충돌하지 않는다.
전역변수
- 함수 바깥 쪽(전역 공간)에 선언된 변수
- 전역변수와 지역변수가 동일한 변수명을 지닐 때, 함수는 함수 내부에 있는 지역변수를 우선한다.
- 전역변수는 함수 내부로 접근해서 사용하는게 가능하다.
- 전역변수는 공공재다. 어느 한 곳에서 전역변수의 값을 조정하면 모든 곳에 동일하게 적용된다.
- 그렇기 때문에 전역변수는 남용해서 사용하지 않는 것이 좋다.
'C언어 공부' 카테고리의 다른 글
| C언어 기초 - 8. 포인터의 개념 (2) | 2025.08.14 |
|---|---|
| C언어 기초 - 7-1. 함수의 개념(리턴) (4) | 2025.08.14 |
| C언어 기초 - 6-2. 중첩반복문 (0) | 2025.08.14 |
| C언어 기초 - 6-1. 반복문 심화문제 (0) | 2025.08.13 |
| C언어 기초 - 6. 반복문의 개념 (while, for) (0) | 2025.08.13 |