任何人都可以告诉我为什么这个程序打印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 :(得分:0)
你已经在struct st的第一个成员中存储了768,所以struct的开头地址在内存中有0x00000300(考虑4个字节的int),当被视为小端流时,它看起来像0x00030000
你已经将它的指针存储在ptr中,它是char *,现在指向值0x00,++ ptr将指向下一个值,即0x03