У меня есть эта структура вместе с методом, который ее инициализирует:
struct Person
{
char name[32];
char lastn[32];
size_t year;
};
void init_pers(struct Person* p, const char* n, const char* ln, size_t y)
{
strcpy(p->name, n);
strcpy(p->lastn, ln);
p->year = y;
}
И так они вызываются в основном:
struct Person f;
init_pers(&f, "Alan", "Wake", 1995);
Простая арифметика указателейМне удалось напечатать два первых атрибута:
printf("First field: %s\n", (const char*)&f); // prints 'Alan'
printf("Second field: %s\n", (const char*)&f + 32); // prints 'Wake'
Однако, когда я пытаюсь использовать тот же атрибут для печати третьего атрибута, который является size_t, я получаю число, отличное от года:
printf("Third field: %lu\n", (size_t)&f + 64); // prints '6422317'
Как правильно распечатать пространство памяти, в котором хранится год, используя арифметику указателей?