无法理解程序的输出

时间:2017-09-13 04:38:11

标签: c

任何人都可以告诉我为什么这个程序打印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));
}

1 个答案:

答案 0 :(得分:0)

你已经在struct st的第一个成员中存储了768,所以struct的开头地址在内存中有0x00000300(考虑4个字节的int),当被视为小端流时,它看起来像0x00030000

你已经将它的指针存储在ptr中,它是char *,现在指向值0x00,++ ptr将指向下一个值,即0x03