함수(Function) : "무엇을 넣으면, 어떤 것을 돌려주는 신비로운 자식"
함수는 '매개변수(또는 인수)'를 입력 받은 후 그 매개변수를 가공하고 처리한 후 '반환값'을 돌려줌
C언어 프로그램 자체에서 제공하는 함수와 직접 정의한 함수가 있다.
예를 들어 똑같은 내용을 출력해야 하는데 이런 출력 코드가 여러곳에서 사용된다고 했을 때
함수를 사용하지 않으면, 코드가 지저분해지고 효율도 떨어진다
함수를 통해 해당 출력문을 미리 정의해두면 가독성도 좋고 효율성까지 두마리 토끼를 다 잡을 수 있다.
#include <stdio.h>
int coffe_machine(int button){
printf("\n# 1.(자동으로) 뜨거운 물을 준비한다. \n");
printf("\n# 2.(자동으로) 종이컵을 준비한다. \n");
switch(button){
case 1 : printf("# 3.(자동으로) 보통커피를 탄다");
case 2 : printf("# 3.(자동으로) 설탕커피를 탄다");
case 3 : printf("# 3.(자동으로) 블랙커피를 탄다");
default : printf("# 3.(자동으로) 아무거나 탄다");
}
printf("# 4. (자동으로) 물을 붓는다.");
printf("# 5. (자동으로) 스푼으로 저어서 녹인다.");
return 0;
}
void main(){
int coffee;
int ret;
printf("A님, 어떤 커피를 드릴까요?(1:보통, 2:설탕, 3:블랙)");
scanf("%d",&coffee);
printf("A님 커피 여기 있습니다.\n\n");
printf("B님, 어떤 커피를 드릴까요?(1:보통, 2:설탕, 3:블랙)");
scanf("%d",&coffee);
printf("B님 커피 여기 있습니다.\n\n");
printf("C님, 어떤 커피를 드릴까요?(1:보통, 2:설탕, 3:블랙)");
scanf("%d",&coffee);
printf("C님 커피 여기 있습니다.\n\n");
}
coffee_machine 이라는 함수로 기능을 정의해두지 않았다면 main함수에서 똑같은 코드를 세번이나 작성해야 했을거다.
매개변수를 이용해서 간단한 더하기 계산기를 만들어보자
int plus(int v1, int v2){
int result;
result = v1 + v2;
return result;
}
voimd main(){
int hap;
hap = plus(100, 200);
printf("%d",hap);
}
당연히 300 이 나온다.
지역 변수 : 한정된 지역(local)에서만 사용되는 변수
전역 변수: 프로그램 전체(global)에서 사용되는 변수
#include<stdio.h>
int a = 100;
void func1(){
int a = 200;
printf("func1()에서 a의 값 ==>%d\n", a);
}
void main(){
func1();
printf("main()에서 a의 값 ==> %d\n", a);
}
#include<stdio.h>
void func1(int a){
a = a + 1;
printf("전달받은 a ==> %d\n",a);
}
void main(){
int a = 10;
func1(a);
printf("func1() 실행 후의 a ==> %d\n",a);
}
위 코드에서 func1은 리턴타입으로 a의 결과를 되돌려준 것도 아니고 포인터로 실제 값을 조작한 것도 아닌
func1의 지역변수에서의 계산을 한 것이라
두 개의 값이 다르다
#include<stdio.h>
void func1(int *a){
*a = *a + 1;
printf("전달받은 a ==> %d\n", *a);
}
void main(){
int a = 10;
func1(&a);
printf("func1() 실행 후의 a ==> %d\n", a);
}
포인터를 통해 a변수 메모리 주소에 직접 접근하여 값은 변경한 것으로 두 개의 값이 동일하다.
#include<stdio.h>
int gugu(int i){
for(int a = 1; a < 10; a++)
{
printf("%d X %d= %2d\n", i, a, i * a );
}
return 0;
}
void main(){
int input;
printf("출력하고 싶은 단을 입력 : ");
scanf("%d", &input);
gugu(input);
}