C언어 공부

C언어 기초 - 7. 함수의 개념 (매개변수)

Client Side 2025. 8. 14. 09:41

함수 정의 : 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);
}

 

 

지역변수

지역 안쪽에서 쓰는 변수를 지역변수라고 한다.

 

  • 일반지역변수 : 함수 지역 내에서 변수의 값이 정해진다.
  • 매개변수도 지역변수이지만, 일반지역변수와는 다르게 함수 외부에서 값이 결정된다.
    • 함수 실행시 넘겨준 인자값에 의해 매개변수 값이 결정됨.
  • 지역변수는 함수 실행시 만들어지고, 함수가 종료되면 지역변수 또한 사라진다.

* 다른 함수의 지역 내에 만들어진 변수는 이름이 같아도 충돌하지 않는다. 

 

 

전역변수

  • 함수 바깥 쪽(전역 공간)에 선언된 변수
  • 전역변수와 지역변수가 동일한 변수명을 지닐 때, 함수는 함수 내부에 있는 지역변수를 우선한다.
  • 전역변수는 함수 내부로 접근해서 사용하는게 가능하다.
  • 전역변수는 공공재다. 어느 한 곳에서 전역변수의 값을 조정하면 모든 곳에 동일하게 적용된다.
  • 그렇기 때문에 전역변수는 남용해서 사용하지 않는 것이 좋다.