티스토리 뷰

본 포스팅은 렉토피아(http://www.lectopia.com) 의 대학 IT 특강 중

정혜경의 C언어 & 기초 자료구조 강의를 수강하는 수강생이 올린 질문글을 토대로 작성하였습니다.


질문.

>강사님! Call by pointer 기법에 대해 궁금증이 생겨 질문드립니다!! 

>C언어에서는 리턴값을 1개 밖에 못 갖는데, Call by pointer 기법을 쓰면 리턴값을 여러 개 내는 것과 같은 효과를 가질 수 있다고 설명해주셨는데, 이게 무슨 말인지 잘 이해가 안갑니다 ㅜㅜ 

>설명부탁드려요 ㅎㅎ ♥



답변.

네에~~ 콜 바이 포인터 기법에 대해서 공부하고 계셨군요 
간단한 예제 첨부해 드릴테니 참고해서 공부해 보세요. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void input(int* a, int* b, int* c);
 
int main()
{
    int a = 0, b = 0, c = 0;
    input(&a, &b, &c);
 
    printf("%d %d %d\n", a, b, c);
    return 0;
}
 
void input(int* a, int* b, int* c)
{
    printf("세개의 정수를 입력하시오 : ");
    scanf("%d %d %d", a, b, c);
}
cs

위 예제에서 보면 input 함수는 값을 반환하지 않지만 메인함수에서 a,b,c 를 printf로 찍어봤을때에 입력한 세개의 정수가 출력되는 것을 확인할 수 있습니다. 

원리는 나중에 포인터 챕터에서 더 자세히 배우시겠지만 포인터(주소)가 매개변수로 전달되므로 함수에서 그 주소가 가리키는 곳의 원본을 바꿀 수 있다는 것인데요. 

따라서 3개의 값을 리턴해서 각각의 변수에 저장한것과 같이 함수 내에서 원본을 바꿀 수 있어서 같은 효과를 낸답니다. 도움이 되셨는지요 그럼 즐프 ^^ 



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함