我想知道是否可以通过struct2来初始化struct1。 我对类型转换的概念也很陌生。 该代码的输出必须为零。请指导。谢谢!
#include<stdio.h>
typedef struct student
{
int roll_id[10];
int name_id[10];
int postn;
} student;
typedef struct exams
{
int subject[10];
int area;
}exams;
int main()
{
exams e= { {0} };
student *pptr= (student*)&e;
printf (" %d\n", pptr->name_id[9]);
return 0;
}
最佳答案
类比很简单:
您买了一个苹果并假装它是一个橙子。
只要你把它当作可以吃的东西来吃就可以吃,但是如果你想吃橙汁的话,你最终会失望的。
用你的两个结构替换 Apple 和 Orange,用编译器替换你。
结构只不过是一 block 内存,通常由不同的数据类型占用。
编译器实现可能会添加 padding bytes 在这些类型之间,结构中的第一个类型除外。
由于两个结构的第一种类型是相同的(10 个整数的数组)。将结构 exam
假装为其他类型,student
可以工作,但如果您尝试访问第一种类型以外的任何其他数据类型,则会导致未定义行为。
未定义的行为是您在代码中得到的。
底线:
你不可以做这个。
关于c - 用另一个结构体初始化该结构体,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211969/