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

C/C++ Q/A
[6022] Re:[질문]c언어 문법 문의합니다.
라스코니 [chouoo] 2482 읽음    2007-06-21 20:11
COMM_T comm 은 글로벌 변수가 아닌 로컬 변수(스택에 들어가게 되는)입니다.

return 시점에서 로컬 변수는 삭제가 되므로 로컬 변수의 포인터를 넘기게 되면 받는 쪽에서 가베지 값을 받을 수 있습니다.


이윤관 님이 쓰신 글 :
: typedef struct {
:     int   a;
:     int   b;
: } COMM_T;
:
: COMM_T  test_function(void)
: {
:     COMM_T   comm;
:
:     comm.a = 100;
:     comm.b = 200;
:     return comm;
: }
:
: void printf_function(void)
: {
:     COMM_T    comm;
:
:     comm = test_function();
:     printf("a=%d \n", comm.a);
:     printf("b=%d \n", comm.b);
: }
:
: 위함수에서 COMM_T를 포인터로 하지 않고 return 해도 문법적으로 문제가 되지 않나요?
: 전 항상 포인터로 해서 return했는데 다른분이 만든 코드를 보니까 위에서 처럼사용하고 있네요.
: 문제가 없는 코드인가요?
: COMM_T *comm으로 한후 return comm한것과 어떤 차이점이 있는건가요?

+ -

관련 글 리스트
6020 [질문]c언어 문법 문의합니다. 이윤관 2665 2007/06/18
6022     Re:[질문]c언어 문법 문의합니다. 라스코니 2482 2007/06/21
6021     Re:[질문]c언어 문법 문의합니다. 남병철.레조 2534 2007/06/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.