鱼C论坛

 找回密码
 立即注册
查看: 1029|回复: 10

[已解决]关于union中不能加入char*指针,

[复制链接]
发表于 2021-8-1 18:45:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
严重性        代码        说明        项目        文件        行        禁止显示状态
错误                “=”: 无法从“const char [4]”转换为“char *”                c:\users\czy\source\repos\project1\project1\源.cpp        16       
#include <iostream>
#include <string.h>
int main()
{
        union   sf
        {
                char *name;
                unsigned long  id;
                int  sex;
        }  ;
        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:09:29
  1. #include <iostream>
  2. #include <string.h>

  3. int main()
  4. {
  5.     union sf
  6.     {
  7.         //char *name;
  8.         const char *name;
  9.         unsigned long  id;
  10.         int  sex;
  11.     }  ;
  12.     sf cao;
  13.     cao.id = 468;


  14.     std::cout << cao.id  << '\n';
  15.     cao.name = "czy";
  16.     std::cout << cao.name << '\n';

  17.     std::cout << cao.id << '\n';
  18.     return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-1 19:12:02 | 显示全部楼层
  1. union   sf
  2.         {
  3.                 const char *name;
  4.                 unsigned long  id;
  5.                 int  sex;
  6.         }  ;
复制代码

改成这样就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-1 19:15:54 | 显示全部楼层
本帖最后由 大马强 于 2021-8-1 19:25 编辑

char *背后的含义是:给我个字符串,我要修改它。
而理论上,我们传给函数的字面常量是没法被修改的。
所以说,比较合理的办法是把参数类型修改为const char *。
这个类型说背后的含义是:给我个字符串,我只要读取它。
原文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-1 18:46:00 | 显示全部楼层
和小甲鱼的C++教学视频一样,但是却编译报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-1 19:09:29 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <string.h>

  3. int main()
  4. {
  5.     union sf
  6.     {
  7.         //char *name;
  8.         const char *name;
  9.         unsigned long  id;
  10.         int  sex;
  11.     }  ;
  12.     sf cao;
  13.     cao.id = 468;


  14.     std::cout << cao.id  << '\n';
  15.     cao.name = "czy";
  16.     std::cout << cao.name << '\n';

  17.     std::cout << cao.id << '\n';
  18.     return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-1 19:14:13 | 显示全部楼层
我用dev可以运行代码,而且修改前后的结果都一样,只有警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-1 19:24:23 | 显示全部楼层
本帖最后由 大马强 于 2021-8-1 19:25 编辑

有可能是一些规则更新了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-2 18:14:40 | 显示全部楼层

感谢大佬!我刚刚试了一下可以的!万分感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-2 18:15:29 | 显示全部楼层

对的,鱼C论坛的人都太有爱了感谢!我一个初学者好感动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 18:22:33 | 显示全部楼层
记得及时设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-3 18:21:27 | 显示全部楼层
3楼4楼的哥们回复的都挺好的,我给3楼最佳答案之后没法给4楼最佳答案了很抱歉。。。希望大家都可以看一下3楼4楼的回答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 05:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表