关于union中不能加入char*指针,
严重性 代码 说明 项目 文件 行 禁止显示状态错误 “=”: 无法从“const char ”转换为“char *” c:\users\czy\source\repos\project1\project1\源.cpp 16
#include <iostream>
#include <string.h>
int main()
{
union sf
{
char *name;
unsigned longid;
intsex;
};
sf cao;
cao.id = 468;
std::cout << cao.id<< '\n';
cao.name = "czy";
std::cout << cao.name << '\n';
std::cout << cao.id << '\n';
return 0;
}
用的是visual studio 2017 union sf
{
const char *name;
unsigned longid;
intsex;
};
改成这样就好了 本帖最后由 大马强 于 2021-8-1 19:25 编辑
char *背后的含义是:给我个字符串,我要修改它。
而理论上,我们传给函数的字面常量是没法被修改的。
所以说,比较合理的办法是把参数类型修改为const char *。
这个类型说背后的含义是:给我个字符串,我只要读取它。
原文
和小甲鱼的C++教学视频一样,但是却编译报错 #include <iostream>
#include <string.h>
int main()
{
union sf
{
//char *name;
const char *name;
unsigned longid;
intsex;
};
sf cao;
cao.id = 468;
std::cout << cao.id<< '\n';
cao.name = "czy";
std::cout << cao.name << '\n';
std::cout << cao.id << '\n';
return 0;
}
我用dev可以运行代码,而且修改前后的结果都一样,只有警告 本帖最后由 大马强 于 2021-8-1 19:25 编辑
有可能是一些规则更新了吧 人造人 发表于 2021-8-1 19:09
感谢大佬!我刚刚试了一下可以的!万分感谢! 大马强 发表于 2021-8-1 19:12
改成这样就好了
对的,鱼C论坛的人都太有爱了感谢!我一个初学者好感动 记得及时设置最佳答案{:10_281:} 3楼4楼的哥们回复的都挺好的,我给3楼最佳答案之后没法给4楼最佳答案了很抱歉。。。希望大家都可以看一下3楼4楼的回答!
页:
[1]