#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct person {
char *name;
unsigned int age;
unsigned int height;
unsigned int weight;
} person_t;
int main() {
void *p;
person_t *p1;
p = malloc(sizeof(person_t));
p1 = (person_t *)p;
p1->name = malloc(80*sizeof(char));
strcpy(p1->name,"my_name"); //edited after rightly pointing in comments
p1->age=25; p1->height=6; p1->weight=65;
printf("\n%p -> %u == ",(p+12),*(unsigned int *)(p+12)) ;
printf("%p -> %u",&p1->height,p1->height) ;
return 0;
}
输出:
0x16c46b4 -> 6 == 0x16c46b4 -> 6
两个打印件都打印相同的指针和值.有人可以帮助我更清楚地理解它吗?
执行了上述代码并了解到两个打印中预期相同的o/p,但仍然没有清楚地说明.