我想知道,是否可以通过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/

10-09 06:38
查看更多