半个菜鸟yzuczy 发表于 2021-8-1 18:45:18

关于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

大马强 发表于 2021-8-1 19:12:02

union   sf
      {
                const char *name;
                unsigned longid;
                intsex;
      };
改成这样就好了

大马强 发表于 2021-8-1 19:15:54

本帖最后由 大马强 于 2021-8-1 19:25 编辑

char *背后的含义是:给我个字符串,我要修改它。
而理论上,我们传给函数的字面常量是没法被修改的。
所以说,比较合理的办法是把参数类型修改为const char *。
这个类型说背后的含义是:给我个字符串,我只要读取它。
原文

半个菜鸟yzuczy 发表于 2021-8-1 18:46:00

和小甲鱼的C++教学视频一样,但是却编译报错

人造人 发表于 2021-8-1 19:09:29

#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;
}

大马强 发表于 2021-8-1 19:14:13

我用dev可以运行代码,而且修改前后的结果都一样,只有警告

大马强 发表于 2021-8-1 19:24:23

本帖最后由 大马强 于 2021-8-1 19:25 编辑

有可能是一些规则更新了吧

半个菜鸟yzuczy 发表于 2021-8-2 18:14:40

人造人 发表于 2021-8-1 19:09


感谢大佬!我刚刚试了一下可以的!万分感谢!

半个菜鸟yzuczy 发表于 2021-8-2 18:15:29

大马强 发表于 2021-8-1 19:12
改成这样就好了

对的,鱼C论坛的人都太有爱了感谢!我一个初学者好感动

大马强 发表于 2021-8-2 18:22:33

记得及时设置最佳答案{:10_281:}

半个菜鸟yzuczy 发表于 2021-8-3 18:21:27

3楼4楼的哥们回复的都挺好的,我给3楼最佳答案之后没法给4楼最佳答案了很抱歉。。。希望大家都可以看一下3楼4楼的回答!
页: [1]
查看完整版本: 关于union中不能加入char*指针,