#include <stdio.h>
//父結構體
struct father
{
int f1;
int f2;
};
//子結構體
struct son
{
//子結構體里定義一個父結構體變量,必須放在子結構體里的第一位
struct father fn;
//子結構體的擴展變量
int s1;
int s2;
};
void test(struct son *t)
{
//將子結構體指針強制轉換成父結構體指針
struct father *f = (struct father *)t;
//打印原始值
printf("f->f1 = %d\n",f->f1);
printf("f->f2 = %d\n",f->f2);
//修改原始值
f->f1 = 30;
f->f2 = 40;
}
int main(void)
{
struct son s;
s.fn.f1 = 10;
s.fn.f2 = 20;
test(&s);
//打印修改后的值
printf("s.fn.f1 = %d\n",s.fn.f1);
printf("s.fn.f2 = %d\n",s.fn.f2);
return 0;
}