C 함수 기초

 

C언어의 함수 기초 정리.

1. 함수
2. 함수의 프로토타입
3. 함수의 포인터 인수

함수(Function)

함수의 선언

반환형 함수명 (인수형 인수명, 인수형 인수명...){
     처리할 내용
}

함수는 기본적으로 main()함수 전에 선언을 해야한다.
혹은 함수의 프로토타입을 main()함수 전에 선언해 두어야 한다.

ex1)
1. 정수형 인수 2개를 받아 정수형 값을 반환하는 함수

int add(int a, int b){
     return (a+b);
}

2. 인수를 받지도, 값을 반환하지도 않는 함수

void function2(void){
     printf("인수를 받지도 값을 반환하지도 않는 함수.\n");
}

ex2)

#include <stdio.h>

int add(int a, int b){      /* add 함수 선언 */
     int result;
     result = (a + b);
     return result;
}


void function2(void){      /* function2 함수 선언 */
     printf("인수를 받지도 값을 반환하지도 않는 함수.\n");
}

void main(void){

     int a;

     a = add(2, 3);
      /* add 함수를 호출하여 리턴값을 변수 a에 저장 */

     printf("2+3=%d\n", a);

     function2();      /* function2 함수 호출 */

}

함수의 프로토타입(Prototype)

함수의 프로토타입 선언

반환형 함수명 (인수형 인수명, 인수형 인수명...);

사용할 함수의 원형을 main()함수 앞에 선언해 두면 함수를 main() 함수 뒤에 선언해도 컴파일시 에러가 발생하지 않는다.
함수들이 많거나 여러 화일에 흩어져 있을 경우엔 헤더파일에 적어두고 인클루드하는 것이 좋다. (ex: #include "MyPrototype.h")

ex1)
int add(int a, int b);
void function2(void);

ex2)
#include <stdio.h>

int add(int a, int b);      /* add 함수의 프로토타입 선언 */

void main(void){

     int a;

     a = add(2, 3);

     printf("2+3=%d\n", a);

}

int add(int a, int b){      /* add 함수 선언 */
     int result;
     result = (a + b);
     return result;
}

함수의 포인터 인수.

함수로 넘겨받은 변수의 값 자체를 변경하고 싶을 때는 포인터를 인수로 사용한다.

ex1)
void increment(int *a){
     a++;
}

호출할 때는 주소값을 넘겨준다.

ex2)
increment(&a);

ex3)
#include <stdio.h>

void increment(int *a);      /* increment 함수의 프로토타입 선언 */

void main(void){

     int a = 0;

     increment(&a);       /* a의 주소로 increment 함수를 호출 */

     printf("a=%d\n", a);

}      /* 값은 a=1 */

void increment(int *a){     /* increment 함수의 선언 */
     (*a)++;
     /* 넘겨 받은 a의 주소값을 참조해 들어가 직접 값을 올린다 */
}

-2007.11.17