-
C언어 함수 기초Visual Studio/C 기초 2012. 9. 14. 17:17
함수는 일정한 동작을 수행하고 필요에 따라 함수를 호출했던 프로그램으로 결과값을 돌려주는 C언어의 독립적이고 독특한 이름을 가진 코드입니다. 기초적인 예제를 보겠습니다.
#include <stdio.h>
long cube(long x);
long input, answer;
main(){
puts("int형 값을 입력해주세요 : ");
scanf("%d",&input);
answer = cube(input);
printf("입력하신 값%d의 세제곱은 : %d\n",input,answer);
}
long cube(long x)
{
long x_cubed;
x_cubed = x*x*x;
return x_cubed;
}매개변수를 먼저 선언한 후에 main 함수에서 함수를 호출합니다. 그 후에 불러온 함수를 실행하는 것이죠. 이 모든건 하향식 접근입니다. 프로그램의 실제 동작은 대부분 가장 밑 부분에 해당하는 함수에서 수행됩니다.
함수 반환 값 형식은 함수의 동작이 완료된 후에 함수를 호출했던 프로그램으로 돌려주는 데이터의 형태를 나타냅니다.
int func(..) //int형을 돌려줍니다.
float func(..) // float형을 돌려줍니다.
void func(..) // 값을 반환하지 않습니다.
int, float 말고 여러 형태의 데이터 형이 있겠죠? 그리고 매개변수와 인수의 차이점을 잘 구별하지 못할겁니다. 매개변수는 함수의 헤더에 포함되는 내용으로 인수의 영역을 확보하는 역할을 합니다. 이번 예제는 인수와 매개변수의 차이점을 알 수 있는 프로그램입니다.
#include <stdio.h>
float y = (float)3.5, z = (float)65.1, a;
float half(float i); //매개변수입니다.
main(){
a = half(y); //여기서 y가 half()에 대한 인수입니다.
printf("a의 값 : %f\n", a);
a = half(z); //z가 half()에 대한 인수입니다.
printf("a의 값 : %f\n", a);
}float half(float i)
{
return (i/2);
}인수와 매개변수의 차이를 아시겠습니까?
함수의 결과값을 프로그램에 전달하기 위해 return문을 사용해야 하는건 아시죠? 함수는 여러 개의 return문을 가질 수 있는데 실제로 효과를 나타내는 것은 가장 먼저 실행되는 return 문입니다. 하지만 이런 방법을 사용하면 각각 다른 값을 출력할 수 있죠.
#include <stdio.h>
int a,b,c;
int larger(int,int); //(int x, int y)로 쓰셔도 괜찮습니다.
main(){
puts("두 개의 다른 int형 값을 입력해주세요 :");
scanf("%d%d",&a,&b);c = larger(a,b);
printf("두 값중 큰 값은 : %d\n", c);
}
int larger(int x, int y)
{
if(x>y)
return x;
else
return y;
}재귀 용법
재귀 용법은 함수가 직접적, 또는 간접적으로 자기 자신을 호출하는 것을 말합니다. 간접적인 재귀 호출은 하나의 함수를 호출하는 다른 어떤 함수가 호출된 함수 내에서 다시 호출되는 경우를 말합니다. 팩토리얼을 예로 들어보겠습니다. 팩토리얼이 뭔지 아시죠? 재귀 용법중 하나입니다. !6 = 6*5*4*3*2*1 = 1440 이런식이죠.
#include <stdio.h>
unsigned int x, y;
unsigned int factorial(unsigned int a);main(){
puts("1부터 8사이의 int형 값을 입력해 주세요 : ");
scanf("%d", &y);
if(y > 8 || y < 1)
printf("입력하신 값은 범위에 포함되지 않습니다.\n");
else{
x = factorial(y);
printf("!%u = %u\n", y, x);
}}
unsigned int factorial(unsigned int a)
{
if (a == 1) //1을 팩토리얼 해봤자이기 때문에 그냥 1만 값을 되돌려줍니다.
return 1;
else
{
a *= factorial(a-1); // 자신을 호출하는 간접적 재귀용법입니다.
return a;
}
}'Visual Studio > C 기초' 카테고리의 다른 글
C언어 프로그램 입력에 대해 (0) 2012.09.22 C언어 연결리스트 (linked list) (0) 2012.09.21 C언어 고급포인터 (0) 2012.09.13 C언어 switch (0) 2012.09.10 C언어 반복문제어 (break, continue, goto) (0) 2012.09.08