함수 인수로 사용되는 포인터
C의 매개변수 전달 방식은 "값에 의한 호출(call by value)"이다.
즉, 매개변수는 함수에 오직 한 방향으로 전달된다는 것이다.
함수의 유일한 결과는 하나의 반환값 뿐이다.
하지만, 포인터를 사용하면 함수의 결과를 반환값을 통하지 않고도 전달할 수 있다.
C는 함수의 정보를 호출자로 넘길 수 있다.
아래의 소스 코드를 보자.
1 : #include <stdio.h>
2 : void inc_count(int *count_ptr); //이 함수의 매개변수는 정수가 아니고 정수형 포인터이다.
3 :
4 : int main(){
5 : int count = 0;
6 : while(count<10){
7 : inc_count(&count);
8 : /*정수의 주소값을 보내준다. 즉 , *count_ptr이 가리키는것은 count의 주소값.
9 : 직접 전달하면 원하는 결과를 얻을 수 없으므로 포인터를 넘기는 것이다.*/
10 : printf("%d\n", count);
11 : }
12 : return 0;
13 : }
14 : void inc_count(int *count_ptr){
15 : (*count_ptr)++; //count_ptr이 가리키는 곳의 값을 1 증가시킨다.
16 : }
<결과화면>
반응형
'Backend > C' 카테고리의 다른 글
링크드 리스트 다루기 (0) | 2012.04.12 |
---|---|
Segmentation Fault (0) | 2012.04.12 |
포인터(pointer)란 무엇인가? (0) | 2012.04.12 |
Call by value & call by reference (0) | 2012.04.12 |
문자열의 길이를 계산하는 두 가지 방법 (0) | 2012.04.12 |