2017-09-13 100 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

謝謝你的回答,我現在得到了一些東西。 –