Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5634] Re:함수 리턴에 의한 변수에 대해서 궁금합니다.
0 [] 1756 읽음    2006-03-11 00:00
정지현 님이 쓰신 글 :
: linked list에 대해서 공부하다가
: 구조체 부분을 value에 의해 리턴받는 함수에서 막히는게 있어서 질문올립니다.
:
: NODE crNode(int value)
: {
:     NODE tmpNode;
:
:     tmpNode.value=value;
:     return tmpNode;
: }
:
: NODE* insNode(NODE* prev,NODE* iNode)
: {
:     NODE* tmpNode;
:
:     tmpNode=(NODE*)calloc(1,sizeof(NODE));
:     *tmpNode=*iNode;
:     return tmpNode;
: }
:
: 위와 같은 두 함수가 있고, main에서
:
: insNode(pnode, &crNode(val1));
: 이런식으로 사용이 가능할까요?
:
: 어떤 함수의 인수로 포인터변수를 넘겨줄 때
: 그 인수에 바로 다른 함수를 사용하면서 그함수에서 리턴받은 변수의 주소값을 넘겨주려면 어떻게 해야하나요..
:
: 위 함수는
: crNode에서 구조체의 각 필드값을 입력받아 구조체를 생성하여 insNode에 복사하려고 합니다.
: 뭐.. 애초에 insNode 함수에서 새로운 노드를 생성하지 않고 crNode에서 생성한 구조체를 바로 사용해도 되겠지만
:
: crNode에서 리턴받은 구조체의 주소값을 바로 다른 함수의 인수로 사용하려면 어떻게 해야하는지 궁금하네요..
: 즐거운 하루 되세요 ^^

insNode(pnode, &crNode(val1));는 할 수 없습니다.
crNode는 NODE 인스턴스를 반환하는데 반환하는 방법은 복사에 의한 것입니다.
즉, 복사할 대상 위치가 이미 정해져 있어야 합니다.
변수에 대입하거나 다른 함수를 호출할 때 값에 의하여 전달하는 게 바로 그것입니다.
제시하신 코드에서와 같이, 그 주소를 구할 수 있도록 되어 있지 않습니다.

아래와 같이 하셔야 합니다.

NODE* crNode(int value)
{
    NODE *tmpNode=(NODE*)calloc(1,sizeof(NODE));
    tmpNode->value=value;
    return tmpNode;
}

insNode(pnode, crNode(val1));

+ -

관련 글 리스트
5631 함수 리턴에 의한 변수에 대해서 궁금합니다. 정지현 1658 2006/03/08
5634     Re:함수 리턴에 의한 변수에 대해서 궁금합니다. 0 1756 2006/03/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.