본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

작은숲:위키노트/초보자를 위한 C 언어 강의/함수

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

C 프로그램은 함수로 이루져있다고 말할 수 있다. C 프로그램이 시작되는 메인 함수조차도 함수이다. 함수를 적절히 사용하면 프로그램을 간결하게도 만들 수 있고, 구조화된 프로그램으로 만들 수 있다. 함수라는 것은 일련의 관련된 작업을 하는 코드들을 모아놓은 것을 말한다. 그런 것들을 모아서 하나의 이름을 가지는 함수로 만들어놓으면 그 다음부터는 그 함수만 호출하면 그 작업을 할 수 있다. 여기서 호출한다는 것은 함수를 실행시킨다는 의미이다. 예를 들면, 정수형 배열에 들어있는 숫자들을 정렬하는 프로그램이 있다고 생각해 보자. 이 배열을 정렬하는 코드들을 함수로 만들어놓으면 다음에 또 정렬을 해야할 필요가 있을 때 전에 만들어놓은 함수를 가져다가 그대로 쓰면 된다. 이와 같이 함수는 상당히 유용한 것이다. 우선 함수를 만들 때, 즉 설계할 때는 생각해야 할 것이 몇 개 있다.

  1. 함수의 이름은 무엇으로 할 것인가?
  2. 함수의 매개변수는 무엇인가?
  3. 함수의 반환값은 무엇인가?

첫번째, 함수의 이름은 변수의 이름을 짓는 것과 동일한 규칙을 갖습니다. 즉, 영문자와 숫자, 밑줄 문자를 사용할 수 있죠. 일반적으로 함수의 이름은 그 함수가 하는 일을 나타내는 이름으로 만듭니다. 정렬하는 함수의 경우, 함수의 이름을 a()라고 짓는 것보다는 sort()라고 짓는 것이 더 알아보기 쉽다. 두번째, 함수의 매개변수라는 것은 함수가 어떤 일을 하는데 필요한 재료를 주는 것이다. 즉, 위의 예에서 나온 정렬을 하는 함수라고 한다면 정수형 배열이 매개변수가 된다. 세번째, 함수의 반환값이라는 것은 함수가 수행하고 난 다음 그 결과값을 말한다. 만약 함수가 수행된 후에 결과값을 함수가 호출한 곳으로 다시 되돌려줘야 한다면 그 돌려줄 값, 반환값의 데이터 형을 결정해야 한다. 실제로 함수를 하나 만들어보도록 하자. 간단하게 두 정수를 덧셈하는 함수를 만들어보자. 우선 함수의 이름은 sum()이라고 하고, 매개변수는 정수형 변수 두개가 되겠고, 반환값은 덧셈을 한 결과, 즉 정수형이 된다. 따라서 함수의 원형을 적어보면,

int sum(int x, int y);

이와 같이 함수의 원형을 만들게 되면, 이제 남은 일은 실제 함수를 만드는 것이다.

int sum(int x, int y)
{    int result;
    result = x + y;
    return (result);
}

위의 예에서, return 문을 사용했다. return 문이 하는 역할은 계산된 결과를 함수가 호출된 곳으로 넘겨주는 것이다. 저 함수를 호출할 때는 아래와 같이 하면 된다.

int a = 10, b = 20, c;
c = sum(a, b);

이런 식으로 함수를 호출해서 반환값을 변수 c에 저장할 수 있다. 간단하나마 함수라는 것에 대해 알아봤다. 함수의 세계는 무궁무진하다. 함수의 매개변수로 배열, 포인터, 포인터 배열, 다차원 배열을 넘기는 방법들에 대해서도 생각해봐야 한다.

이 작은숲 문서의 출처는 위키노트의 위키노트: 문서입니다.