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"),老是提示错误,大侠们我错在哪呢?
C++中的union赋值问题
答案:3 悬赏:30
解决时间 2021-11-29 01:18
- 提问者网友:我稀罕你
- 2021-11-28 06:45
最佳答案
- 二级知识专家网友:荒唐后生
- 2021-11-28 07:17
mystr str1=
{
"name",
strcpy(str1.str_id,"a"),//这个位置填充的需要int类型的值,strcpy返回值是char*,类型不匹配
"p",
};
{
"name",
strcpy(str1.str_id,"a"),//这个位置填充的需要int类型的值,strcpy返回值是char*,类型不匹配
"p",
};
全部回答
- 1楼网友:24K纯糖
- 2021-11-28 09:16
mystr str1=
{
"name",
0,
"p",
};
strcpy(str1.str_id,"a");
...
- 2楼网友:许你一世温柔
- 2021-11-28 07:49
union就是里面的成员共用同一个存储空间,这个存储空间的大小与union中占用空间最大的一个成员相同。
在这个例子中,union占用的空间和float类型占用的空间相同。
union中虽然可以有不同的变量,但同一时刻只能有一个值。
union的左右主要是节省内存空间,但现在内存都比较大,所以在一般的编程中很少用到,而且处理不好容易出错,建议非特殊情况不要使用。
上面程序中,第一句
cout<
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯