【发布时间】:2016-01-13 17:35:09
【问题描述】:
我很想知道结构填充中填充字节中包含的值。
所以我写了下面的代码,但是增加指针会指向下一个结构成员。我们如何访问填充的内存位置?
#include <stdio.h>
struct /* __attribute__((__packed__))*/ test{
int a;
char b;
int c;
};
main(){
struct test a;
a.a = 10;
a.b = 's';
a.c = 15;
printf("%d\n",sizeof(a));
printf("address of first int is: %p \n",(void *)&a.a);
printf("address of the first char is : %p\n",(void *)&a.b);
printf("address of the second int is : %p\n",(void *)&a.c);
printf("the value of char is: %c\n", a.b);
int *p;
p = (void *) &a.b;
printf("%p\n",p);
p++;
printf("the value in the padded place is: %d\n",*p);
return 0;
}
【问题讨论】:
-
我会使用
char*。 -
谢谢,这就是我想要的。填充字节中的默认值是什么?
-
@KlasLindbäck ... 指向
&a并迭代sizeof(a)步骤。 -
是的,根据设计/规范,将指向类型的指针递增会使指针中的内存地址增加 sizeof(type)。 char* pB = &a.b;和 char* pC = (char*)&a.c;然后当 pB