【发布时间】:2016-01-05 18:56:50
【问题描述】:
#include<stdio.h>
main()
{
unsigned char c;
typedef struct name {
long a;
int b;
long c;
}r;
r re = {3,4,5};
r *na = &re;
printf("%d", *(int*) ((char*)na + (unsigned int) & ( (struct name *)0 )->b));
}
输出:
4
如果有人详细解释 printf 语句在这个 c 程序中的作用,我将不胜感激?据我说int 是铸造的。然后char 指针被转换为na。但我无法理解整个声明整体在做什么?选角在这里做什么? b 不是指针,但它似乎被用作指针。我在 c 编程书籍之一中发现了这个问题。似乎是计算结构偏移量,但我仍然不知道如何计算。请帮我详细了解程序。
【问题讨论】:
标签: c pointers casting printf offset