Sample Image
공지: 보이드리얼리티 베타 서비스가 시작 됐습니다. (2025-03-09 13:13:36)

프로그래밍 >

533 포인터를 통한 간접접근 좀 물읍시다 형들 카운터블 2025-03-10 07:54:59 143
카운터블 | 2025-03-10 07:54:59 | 143 hits

#include<stdio.h>

struct point
{
 int x;
 int y;
};

struct point* function(void);

int main(void)
{
 struct point* p;
 p=function();
 printf("%d %d\n",p->x,p->y);
 printf("%d %d\n",(*p).x,(*p).y);
 printf("%x\n",p);

 

return 0;

}

struct point* function(void)
{
 struct point call={10,20};
 printf("%x\n", &call);
 return &call;
}

 

이면 실행결과가

 

12fe7c

10 20

1245032 4264912

12fe7c

 

로 나오는데

 

stuct point* function이 끝나면 원래 local variable인 call의 메모리가 완전히 사라져야되자나요?

 

근데 위에 밑줄그은 부분에서

 

첫번째 printf는 10 20이 출력되는 반면

 

두번째에선 이상한 값이 나옵니다.

 

p->x와 (*p).x의 차이는 무엇인가요?

 

p->x,y는 p의 주소에서 +0,+1을 더한값 만큼 이동해서 출력하는식인가요?

 

그리고 struct point인 p가 fuction의 result 값을 반환받았을 때 sturct 변수의 멤버변수 수와 크기까지 같이 받는가요?

 

(^오^) "Cool~" 0 | (-_-) "Damn!" 0
목록 수정  삭제
목록 수정 삭제

프로그래밍 프로세스

스레드 작성
10 안녕하세요, 컴공진학 희망하는 급식이 입니다. [1] 3 프린이 2024-10-22 13:39:09 416
프린이 | 2024-10-22 13:39:09 | 416 hits
9 광주 사는 앱쟁이 입니다. [2] 1 앱마스터 2024-10-19 21:12:20 439
앱마스터 | 2024-10-19 21:12:20 | 439 hits