gpt4 book ai didi

c - 用另一个结构初始化结构,这可能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:32 25 4
gpt4 key购买 nike

我想知道,是否可以通过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,用编译器替换你。

结构不过是一 block 内存,通常由不同的数据类型占用。
编译器实现可能会添加 padding bytes 在这些类型之间,除了结构中的第一个类型。
因为你的两个结构的第一种类型是相同的(10 个整数的数组)。将结构 exam 假装为其他类型,student 将起作用,但如果您尝试访问第一种类型以外的任何其他数据类型,它将导致 Undefined Behavior .

未定义的行为是您在代码中得到的。

底线:
你不可以做这个。

关于c - 用另一个结构初始化结构,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com