2017-09-13 53 views
-2

谁能告诉我为什么这个程序打印3作为输出或告诉程序的功能。无法理解程序的输出

#include<stdio.h> 
#include<stdlib.h> 

struct st 
{ 
     int a; 
     int b; 
}; 
void func(struct st*); 

int main() 
{ 
     struct st ab={128,768}; 
     struct st *pq=&ab; 
     func(pq); 
     return 0; 
} 

void func(struct st *p) 
{ 
     char *pt; 
     p->a=768; 
     p->b=128; 
     pt=(char*)p; 
     printf("----%d\n",*(++pt)); 
} 
+0

'768':'0x0300'。 – BLUEPIXY

+0

你是否从某处复制了此代码并询问我们为什么代码无法工作? –

+0

它是一个面试问题,昨天有人问我。所以不能从任何网站复制(至少据我说)。 –

回答

0

已存储768在结构ST的第一个成员,所以在结构的开始地址0x00000300(考虑4个字节为int)的记忆,小端查看时流,它将会看起来像0x00030000

您已将指针存储在char *中,该char *现在指向值0x00,++ ptr将指向下一个值,即0x03

+0

谢谢你的回答,我现在得到了一些东西。 –