정의 : 입력(전달인자)와 그에 따른 적절한 출력(반환 값)이 존재하는 것
-> 전달인자가 없거나 반환 값이 없거나 둘 다 없는 경우도 존재
-> 전달인자는 함수 호출 시의 실제 값, 매개변수는 함수 정의 시의 변수
int main(void) { int num1; num1 = printf("12345\n"); -> 12345 printf("%d \n", num1); -> 6( \n 문자를 포함해 6을 반환하여 변수에 저장) retunr 0; }
int Add(int num1, int num2) { int result = num1 + num2; return result; }
전달인자 o, 반환값 x : 함수가 void로 선언되어 return문이 없음
void ShowAddResult(int num) { printf("덧셈결과 출력 : %d \n", num) }
전달인자 x, 반환값 o : 매개변수 선언 위치에 void를 선언하여 함수 호출 시에 인자 전달 X
int ReadNum(void) { int num; scanf("%d", &num): return num: }
void HowToUseThisProg(void) { printf("아무말 대잔치"); }
for(a = 0; a < 3; a++) { int b = 0; b++; ... } -> for문이 실행될 때 메모리 공간에 지역변수 b가 할당되었다가, for문이 종료되면 소멸 -> 따라서 b는 항상 0
전역변수, 지역변수에 static 선언 추가가능
여기서는 static 지역변수만 설명
지역변수의 특징
-선언된 함수 내에서만 접근 가능
-함수 내에서 선언된 지역변수는 해당함수가 반환되면 소멸
-> static 선언이 붙게되면 두번째 특성이 변화
-> 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재
void ss(void) { static int num1 = 0; int num2 = 0; num1++, num2++; pritnf("static %d, local %d", num1, num2); } int main(void) { int i; for(i=0; i<3; i++) ss(); return 0; } -> static 1,2,3 그리고 local 1,1,1 과 같은 결과 확인 가능
int Factorial(int n) { if(n==0) return 1; else return n * Factorial(n-1) } int main(void) { printf("3! = %d \n, Factorial(3)); }