티스토리 뷰

tmp

c언어 - 함수

박스여우 2015. 3. 5. 16:18
c언어의 함수에대해 알아보겠습니다.




함수란?
지정된 값을 넣으면 그 안에서 프로그램으로 지정해놓은 행동을 실행시키는 상자같은 것 입니다.



함수의 사용방법!
함수는 프로그래머의 정의에 따라 다양한 활동을 할수있습니다.

기본적으로 함수의 머리부분에는,

(반환타입) (함수이름)(전달받을 인수의타입과 이름){

힘수의 내용
}

반환타입은 return을 사용하느냐 마느냐, 무슨 타입의 변수를 반환하느냐에따라 달라집니다.

반환할 값이 없는경우는 void를 써 넣으시고, return을 쓰지 않으시면 됩니다.

return 1; 같은경우는
정수형을 반환하는 것이 되기에 반환타입에 int를 써넣으면 되고,

return 'A';같은 경우는, 문자형을 반환하는것이기에, char을 써넣으시면 됩니다.


전달받은 인수를 가인수라고 하는데, 자유롭게! 마음대로! 결정하시면 됩니다!



예시!!

#include <stdio.h>
int testh(int, int);


main() {

int f=1, p=6, g;

g=testh(f, p);
}

int testh (int haha, int fire) {

return haha + fire;
}

이 소스는 haha가 f의 값을 전달받아 1이되고, fire는 p의값을 전달받아 6이되어 두 값의 합인 7이 반환되어 g의 값은 7이 됩니다.

위에서 보면, 만들어둔 함수를 호출하는방법은

함수이름(전달 인수); 이런식으로 호출이 가능합니다. 호출할때의 전달인수는 실인수 라고 합니다.

그럼, 윗쪽줄의 int testh(int, int)는 뭐냐구요?
바로 프로토타입 선언입니다!!



프로토타입 이란?
c에서는 함수를 호출하기위해서는 main함수 위에 함수를 만들어두어야 합니다.

하지만, 그렇게 코딩하게되면 가독성이 떨어지기때문에 프로토타입이라는걸 선언합니다.

프로토타입 선언은 밑에 함수가 있다고 알려주는 안내판이라고 생각하시면 됩니다.



프로토타입 선언방법!
반환타입 함수이름(전달받을 인수의 타입);


Call By Value
call by value가 뭐냐구요?

예시를 들어 설명하겠습니다.

#include <stdio.h>
void callby(int);

main() {
int test=99;

printf("%d \n", test);
callby(test);

printf("%d", test);

}

void callby(int input){
input = 82;
}

위와 같은 프로그램을 실행하면 출력결과가
99
99가 나오게됩니다.

어떻게 된걸까요?
test를 가져와 input의 값을 수정했을텐데요?

값이 변하지 않은 이유는
함수가 인수를 전달받을때 값을 복사하여 받아들이기 때문에 서로 다른 변수입니다.

이것이 바로call by value입니다.

차후에는 call by reference라는 주솟값과 포인터라는 변수를 사용하여 원래 변수의 값을 수정할수 있습니다.

'tmp' 카테고리의 다른 글

String.h 헤더파일 함수  (0) 2015.05.25
c언어 - 포인터  (0) 2015.03.07
c언어 - 배열  (0) 2015.03.05
c언어 연산자  (0) 2015.03.04
c언어 - printf, scanf함수  (2) 2015.03.04
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함