获取结构填充字节的地址
getting address of the structure padded bytes
我很想知道结构填充中填充字节中包含的值。
所以我写了下面的代码,但是递增指针将指向下一个结构成员。我们如何访问填充的内存位置?
#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;
}
您可以使用 const unsigned char *
:
void print_hex(const void *data, size_t size)
{
const unsigned char *src = data;
while (size > 0)
{
printf("%02x ", *src++);
--size;
}
printf("\n");
}
这样使用:
struct test a = { 10, 's', 15 };
print_hex(&a, sizeof a);
我很想知道结构填充中填充字节中包含的值。
所以我写了下面的代码,但是递增指针将指向下一个结构成员。我们如何访问填充的内存位置?
#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;
}
您可以使用 const unsigned char *
:
void print_hex(const void *data, size_t size)
{
const unsigned char *src = data;
while (size > 0)
{
printf("%02x ", *src++);
--size;
}
printf("\n");
}
这样使用:
struct test a = { 10, 's', 15 };
print_hex(&a, sizeof a);