2007/07/31

A Book On C Chapter 6 연습문제 8번.

다음 프로그램은 어떤 값을 출력하는가? 설명하여라.

#include
typedef unsigned long ulong;

int main(void)
{
char *pc = NULL;
int *pi = NULL;
double *pd = NULL;
long double *pld = NULL;

printf("%5lu%5lu\n%5lu%5lu\n%5lu%5lu\n",
(ulong)(pc+1), (ulong)(pi+1),
(ulong)(pd+1), (ulong)(pld+1),
(ulong)(pc+3), (ulong)(pld+3));

return 0;
}

NULL은 0번지를 포인터하므로 pc, pi, pd, pld는 초기화 후에 0 값을 가진다.
pc+1 : pc는 char형 포인터이므로 1바이트 증가
pi+1 : pi는 int형 포인터이므로 4바이트 증가
pd+1 : pd는 double형 포인터이므로 8바이트 증가
pld+1 : long double형은 12바이트인거 같다.
pc+3 : 3바이트 증가
pld+3 : 36바이트 증가

댓글 없음:

댓글 쓰기