中易网

C++中的union赋值问题

答案:3  悬赏:30  
解决时间 2021-11-29 01:18
using namespace std;
#include "stdafx.h"
#include <iostream>
#include <string>
struct mystr
{
std::string name;
union
{
int int_id;
char str_id[20];
};
char add[5];
};

int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;

mystr str1=
{

"name",
strcpy(str1.str_id,"a"),
"p",
};
cout<<str1.int_id;
cin.get();
cin.get();
return 0;
}
里面这一行strcpy(str1.str_id,"a"),老是提示错误,大侠们我错在哪呢?
最佳答案
mystr str1=
{

"name",
strcpy(str1.str_id,"a"),//这个位置填充的需要int类型的值,strcpy返回值是char*,类型不匹配
"p",
};
全部回答
mystr str1= { "name", 0, "p", }; strcpy(str1.str_id,"a"); ...
union就是里面的成员共用同一个存储空间,这个存储空间的大小与union中占用空间最大的一个成员相同。 在这个例子中,union占用的空间和float类型占用的空间相同。 union中虽然可以有不同的变量,但同一时刻只能有一个值。 union的左右主要是节省内存空间,但现在内存都比较大,所以在一般的编程中很少用到,而且处理不好容易出错,建议非特殊情况不要使用。 上面程序中,第一句 cout<
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯