CAPS 위키 : 함수

함수 [ 수정 내역 ] [ 수정 ]

최근 수정:

목차

1. 정의

2. 세부

3. 사용법

4. 장점

4.1. 예시

4.2. 예시

4.3. 예시3

5. 호출과정

6. 같이 보기

1. 정의

프로그램 소스 코드에서 일정한 동작을 수행하는 코드

2. 세부

수학에서 함수의 구성 3가지 (정의역, 공역, 치역)이 있고, 기능적인 구성 요소 3가지 ( x, f(x), y)가 있는것처럼 컴퓨터에서도 다음과 같이 생각하면 된다.

이 때, 수학에서 정의역이 공집합이고 치역이 공집합인 함수가 있는것처럼

컴퓨터에서도 매개변수가 없는 함수, return 시킬 자료가 없는 함수가 있다.

이 때 쓰는 자료형은 void(빈)로, void main(void) 가 흔히 쓰이는 예시이다.

이렇게 선언된 함수는 기능만 하는 함수라고 생각하기 쉬우나, 전역변수를 쓰는 경우를 주의 하자.

3. 사용법

[return의 자료형] [함수이름] ([매개변수 자료형] [매개변수 이름]); - 선언.

(main문)

[return의 자료형] [함수이름] ([매개변수 자료형] [매개변수 이름]) {

[함수몸체] - 함수 몸체에는 반복되는 코드가 들어감.

}

+ 함수 안에 함수를 호출 시킬 수 있다 (예시 3)

4. 장점

만약 다음과 같은 코드가 있다고 하자.(예시 참조)

저걸 일일히 하나하나 다 친다고 한다면 CTRL+C/V가 있다 하더라도 매우 생산성 떨어지는 작업일 것이다.

하지만 함수 개념을 적용해서 아래 코드를 적용한다면 b1~b9에 대한 연산을 생략할 수가 있다.(예시 2 참조)

여기에서 더 줄인다면 배열 개념이 들어가므로 이하 생략.

4.1. 예시

#include < stdio.h >

int main()

{

/*int x,y;*/

/*scanf("%d",&x);*/

/*y = x*x + 3 * x + 4 * 4 * 4;*/

int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;

int b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;

scanf("%d %d %d %d %d %d %d %d %d %d",a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);

b1 = a1*a1*a1 + 3 * a1 + 4;

b2 = a2*a2*a2 + 3 * a2 + 4;

b3 = a3*a3*a3 + 3 * a3 + 4;

b4 = a4*a4*a4 + 3 * a4 + 4;

b5 = a5*a5*a5 + 3 * a5 + 4;

b6 = a6*a6*a6 + 3 * a6 + 4;

b7 = a7*a7*a7 + 3 * a7 + 4;

b8 = a8*a8*a8 + 3 * a8 + 4;

b9 = a9*a9*a9 + 3 * a9 + 4;

printf("a1을 연산한 결과 %d", b1);

printf("a2을 연산한 결과 %d", b2);

printf("a3을 연산한 결과 %d", b3);

printf("a4을 연산한 결과 %d", b4);

printf("a5을 연산한 결과 %d", b5);

printf("a6을 연산한 결과 %d", b6);

printf("a7을 연산한 결과 %d", b7);

printf("a8을 연산한 결과 %d", b8);

printf("a9을 연산한 결과 %d", b9);

printf("a10을 연산한 결과 %d", b10);

printf("y = %d",y);

}

/* 기본 원형 코드. 타이핑 할것 많고 보기 귀찮음. 코드의 알고리즘이 귀찮아지면 같이 귀찮ㅇ아짐.*/

4.2. 예시

#include < stdio.h >

int sum(int a);

int main()

{

int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;

int b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;

scanf("%d %d %d %d %d %d %d %d %d %d", &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);

b1 = sum(a1);

b2 = sum(a2);

b3 = sum(a3);

b4 = sum(a4);

b5 = sum(a5);

b6 = sum(a6);

b7 = sum(a7);

b8 = sum(a8);

b9 = sum(a9);

b10 = sum(a10);

printf("a1을 연산한 결과 %d", b1);

printf("a2을 연산한 결과 %d", b2);

printf("a3을 연산한 결과 %d", b3);

printf("a4을 연산한 결과 %d", b4);

printf("a5을 연산한 결과 %d", b5);

printf("a6을 연산한 결과 %d", b6);

printf("a7을 연산한 결과 %d", b7);

printf("a8을 연산한 결과 %d", b8);

printf("a9을 연산한 결과 %d", b9);

printf("a10을 연산한 결과 %d",b10);

}

int sum(int x)

{

int tmp;

tmp = x*x*x + 3 * x + 4;

return tmp;

}

4.3. 예시3

#include < stdio.h >

int sum(int a);

void print(int a);

int main()

{

int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;

/*int b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;*/

scanf("%d %d %d %d %d %d %d %d %d %d", &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);

print(a1);

print(a2);

print(a3);

print(a4);

print(a5);

print(a6);

print(a7);

print(a8);

print(a9);

print(a10);

}

int sum(int x)

{

int tmp;

tmp = x*x*x + 3 * x + 4;

return tmp;

}

void print(int a)

{

printf("an을 연산한 결과 %d", sum(a) );

}

/* 함수 내부에 함수를 중첩 시킬 수 있음.*/

5. 호출과정

6. 같이 보기

C언어 프로젝트

배열

재귀함수

변수