[함수의 데이터형] 함수명 ([인수ㄱ(, 인수ㄴ, ...)])
{
문장 1;
.
.
[return;]
}

함수는 머리와 몸체로 나뉜다. 머리는 함수명과 인수리스트가 있는 부분이며 몸체는 블록으로 묶인 부분이다. 함수의 데이터형은 함수에서 리턴되는 값에 의해 결정되며 인수는 함수를 호출할 때 전달되는 값을 말하며 매개변수란 인수값을 저장하기 위해 선언된 변수이며 인수와 개수가 일치해야 한다. 함수정의할때는 어떤 작업이든 작성할수 있으나 함수안에 함수를 또 정의하는 일은 할수 없다. 그래서 함수를 만드는 위치는 크게 main()함수 위나 또는 아래에 작성한다. main()함수아래에서 정의할때는 반드시 main()함수위에 함수의 원형을 선언해야 한다. 함수의 원형은 함수의 머리부분을 그대로 작성하면 되며, 매개변수의 이름은 생략할수 있다.

#include<stdio.h>
int sub(int);
main()
{
int num,result;
scanf("%d",&num);
result = sub(num);
printf("%d",result);
}
int sub(int num)
{
int mul;
mul = num * num;
return mul;
}


인수의 호출방법 +/-

가인수의 값이 변경되더라도 실인수의 값은 영향을 받지 않는다. 실인수와 가인수의 기억장소는 각각 독립적으로 사용된다.


#include<stdio.h>
void val(int a)
{
a=a+10;
printf("val함수에서 a의 값은 = %d\n",a);
}
void main()
{
int a;
printf("정수입력?");
scanf("%d",&a);
printf("main에서 a의 값은 = %d\n",a);
val (a);
printf("val함수를 호출한 후 값은 =%d\n",a);
}

실인수의 주소를 가인수로 전달하는 기법 +/-

#include<stdio.h>
void ref(int *a)
{
*a=*a+10;
printf("ref함수에서 a의 값은 = %d\n",*a);
}
void main()
{
int a;
printf("정수입력?");
scanf("%d",&a);
printf("main에서 a의 값은 = %d\n",a);
ref(&a);
printf("ref함수를 호출한 후 값은 =%d\n",a);
}