저 세상밖으로...

함수(function) 본문

프로그래밍/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을 출력하고 있다.



'프로그래밍 > C언어' 카테고리의 다른 글

문장(Statement), 수식(expression), 연산자(operator)  (0) 2016.05.06
변수  (0) 2016.05.06
Comments