프로그래밍/C언어
함수(function)
열혈매미
2016. 5. 7. 18:47
함수 원형
return_type function_name(arg-type name-1, ....arg-type name-n);
함수 정의
return_type function_name(arg-type name-1, ....arg-type name-n) { /* 함수의 여러가지 문장들 */ }
인수(arguments)와 매개 변수(parameter)
: 매개 변수(parameter) 안에 인수(arguments)를 넣는다.
#include <stdio.h> float x = (float) 3.5, y = (float) 65.11, z; float half_of(float k); main() { /* 여기서 x가 half_of()에 대한 인수이다. */ z = half_of(x); printf("The value of z = %f \n", z); /* 여기서 y가 half_of()에 대한 인수이다. */ z = half_of(y); printf("The value of z = %f\n", z); return 0; } float half_of(float k) { /* k는 매개변수이다. half_of()가 호출될때마다 k는 인수로 전달된 값을 가진다. */ return (k/2); }
전역 변수(global variables)와 지역변수(local variables)
- 전역에서 선언된 변수를 지역 함수에서도 호출할 수 있다.
- 필요시 전역 변수를 지역 함수에서도 지정이 가능하며, 메인 함수에서 저장된 값을 호출할 수 있다.
- 하지만 같은 이름으로 지역 함수에서 변수를 선언할 경우(이른바 로컬 변수 local variables), 전역 변수와는 개별적으로 변수가 저장되고 호출된다.
#include <stdio.h> int a = 1; void local_function1(); void local_function2(); void local_function3(); main() { printf("in main funciton : a = %d\n", a); local_function1(); local_function2(); printf("in main funciton : a = %d\n", a); local_function3(); printf("in main funciton : a = %d\n", a); } void local_function1() { printf("in local function : a = %d\n", a); // 전역 변수를 호출한다. } void local_function2() { a = 0; // 전역 변수a에 0을 할당한다. } void local_function3() { int a = 2; printf("in local function : a = %d\n", a); // 전역 변수를 호출한다. }
위 소스의 결과는 다음과 같다.
in main funciton : a = 1 in local function : a = 1 in main funciton : a = 0 in local function : a = 2 in main funciton : a = 0
local_function1에서는 전역 변수 a를 호출하여 1을 출력하였다.
local_function2에서는 전역 변수 a에 0을 할당하여, 메인함수에서 0을 출력하였다.
그런데 local_function3에서는 로컬 변수 a를 선언하고 2를 할당하였다. 이에 로컬 함수에서는 전역 변수와 독립된 값 2를 출력하였으나, 메인함수에서는 여전히 할당된 0을 출력하고 있다.