我想知道,是否可以通过structure2初始化structure1。
我对演员的概念也不太熟悉。
此代码的输出必须为零请引导谢谢!
#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,用编译器替换Apple&Orange。
结构只不过是一块内存,通常由不同的数据类型占用。
编译器实现可以在这些类型之间添加padding bytes,但结构中的第一个类型除外。
因为两种结构的第一种类型是相同的(10个整数的数组)将结构设为其他类型,exam
将起作用,但如果尝试访问第一种类型以外的任何其他数据类型,则会导致未定义的行为。
未定义的行为是你在代码中得到的。
底线:
你不能这样做。
关于c - 用另一个结构初始化该结构,这可能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14211969/