结构体 赋值 初始化-含有union的结构体能被直接赋值吗

问题描述

含有union的结构体能被直接赋值吗

union data1
{ int i;
unsigned char c[4];

};
union data2
{ int i
unsigned char c[4];

float f;

};

struct st1
{
int id;
union data1 value;
};
struct st2
{
int id;
union data2 value;
};

st1 firstdata;
st2 seconddata;

firstdata.id = 1;
firstdata.value.i = 2;
seconddata = firstdata; //success or fail????

问题:如题 含有union的结构体A能直接赋值给另一个含有union的结构体B吗?其中B中union的成员包含了A中union中所有的成员

解决方案

肯定不行呀,你这样已经是两个不同类型了,需要用成员一个一个进行

时间: 2024-08-31 17:19:30

结构体 赋值 初始化-含有union的结构体能被直接赋值吗的相关文章

结构体指针初始化问题

问题描述 结构体指针初始化问题 定义一个队列结构体,想用init方法初始化一个该结构体的指针,testQueue1和testQueue2两种方法都有问题.Queue内部的front和rear指针无法初始化. 但如果是在主程序或者testQueue函数中用malloc初始化,却是可以的. main程序如下: #include "Queue.h" void testQueue1(); void testQueue2(); void testQueue3(); int main() { pr

dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以通过这个指针读取它的成员变量吗

问题描述 dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以通过这个指针读取它的成员变量吗 dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以直接通过这个指针读取它的成员变量吗? 解决方案 当然是可以的.但是更好的方式是把分配内存的工作交给调用者去做.因为这样不容易忘记释放内存.申请和释放的代码成对出现. 参考windows api里的GetWindowRect,它由调用者传入一个lpRect结构体指针,函数获取了窗口坐标,填充它. 解决方案二: 只要是在同一个

c/c++ 内存 结构体-在一个结构体中动态创建另一个结构体数组,那么怎样释放内存!求助,谢谢了!

问题描述 在一个结构体中动态创建另一个结构体数组,那么怎样释放内存!求助,谢谢了! struct Link_Info { int Destination_VertexID; int Vertex_To_Vertex_LinkID; int Cost_of_Link; }; struct Vertex_Info { int OutDegree; int Vertex_Num; Link_Info* out = new Link_Info[8]; }; Vertex_Info* Vertex_Cha

c语言 结构体 指针-写了一个返回结构体指针的函数,编译时总是提醒没有初始化p,但是初始化了。

问题描述 写了一个返回结构体指针的函数,编译时总是提醒没有初始化p,但是初始化了. 源码 程序是用C写的,VS2013编译. 这是其中使用结构体的定义 这是哈夫曼函数的定义 解决方案 结构体指针的初始化 解决方案二: 哪有你所说的指针p啊 解决方案三: 是否用的c语言方式编译.编译器是否用c++方式编译

C# 结构体转字节数组时若结构体某个变量为汉字应该怎么转换

问题描述 以下是代码:intstructSize=Marshal.SizeOf(tmpStruct);//结构体大小byte[]tmpByte=newbyte[structSize];//申请字符数组IntPtrstructPtr=Marshal.AllocHGlobal(structSize+100);//分配结构体大小的内存空间Marshal.StructureToPtr(tmpStruct,structPtr,true);//将结构体拷贝进去Marshal.Copy(structPtr,t

【Go语言】【12】GO语言的结构体

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1671463        当我第一次接触到C语言时,就对结构体投入了极大的兴趣,认为这个东西以后大有作为,后来接触Java.C++,面向对象编程中的对象进入我的视线,经过了这么多年的磨练,回过头来再看结构体依旧是那么亲切:同时从另一个角度上看结构体与面向对象中的成员对象是多么的相像 :) 一.结构体元素 结

函数指针 c语言 指针-C语言 在函数里给结构体赋值

问题描述 C语言 在函数里给结构体赋值 求懂的人解释一下,谢谢 代码意思是想在传结构体指针给函数,在函数里面改变结构体各项的值,运行结果为:a和b的值能改变,但到打印指针c的时候,程序报错 #include struct stu { int a; int b; char *c; }; //给结构体s1初始化 void Fun(void *ptr) { char *s = (char *)malloc(10); s = "Hello World"; int *p = (int *)ptr

结构体struct、枚举enum、联合体union、位字段、自定义类型typedef、字节对齐

结构体struct 1 结构体的基本知识 2 结构体与函数 3 结构体数组 4 自引用结构体 枚举变量enum 联合体union 位字段 1 一般的方法定义屏蔽吗 2 用位字段来定义屏蔽吗 自定义类型typedef 字节对齐 pragma pachx 按x个字节对齐 1.结构体struct 1.1 结构体的基本知识 #include <stdio.h> struct point{ int x; int y; }p1, p2, p3; struct point pt; struct point

c语言,对结构体中的整型数组进行赋值.....

问题描述 c语言,对结构体中的整型数组进行赋值..... c语言中,在结构体里声明整型数组,想对整型数组赋值,只能用循环吗?如果我想这样呢..... typedef struct Data { int arr[10]; }Data; int main() { Data data; data = (Data)malloc(sizeof(Data)); data->arr[10]={1,3,2,4,5,6,7,8,9,0}; . ... ... ... } 这样可以吗? 解决方案 绝对不可以.数组作