c에서 이것이 맞는 문법인지 봐주세요
글쓴이: dalili / 작성시간: 수, 2009/11/11 - 4:35오후
#include
struct st
{
int a;
int b;
int c;
};
int main(void)
{
struct st *p;
p=NULL;
printf("%d\n", sizeof(*p));
printf("%d\n", sizeof(p));
return 0;
}
결과
12
4
p에는 NULL을 집어 넣었는데 sizeof(*p)가 잘 되거든요
원래 이렇게 사용해도 되는건가요?
세그먼트펄트가 날줄 알았는데 출력이 되네요
Forums:
gcc -Wall
컴파일 할 때
gcc -Wall
해 보셔요.
http://sebul.sarang.net/
세벌 https://sebuls.blogspot.kr/
sizeof가 런타임에
sizeof가 런타임에 실행되는 함수가 아니라 컴파일 타임에 상수로 결정되기 때문 아닌가요?
sizeof(*p) 에서 *p의 타입인 struct st의 크기가 상수로 저장되기 때문에 p가 null이든 아니든 상관없을 거예요.
NULL 이어도 상관이
NULL 이어도 상관이 없는것이...
0번지부터 구조체크기까지가 실제내용입니다. 메모리가 할당되었거나말거나..
사용하면 문제가 되어도 그크기를 물었기에 정상입니다.
아래처럼
아래처럼 하면
각 멤버가 위치한 offset값이 나옵니다.
offsetof 와 비슷한 기능이 탄생합니다^^
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐? 그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
-----------------------
내가 쓰는 글은 틀릴 수 있습니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기