char *src = "Hello";是合法的语句吗?

「已注销」 2018-03-22 08:18:51
char *src = "Hello";是合法的语句吗?
...全文
964 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
月凉西厢 2018-03-30
  • 打赏
  • 举报
回复
char* src = "hello"; VS2017实测不合法。 如果需要内容可修改,可用数组,如果用指针的话我真想不出来编译器怎么分配内存,如果访问越界怎么办 如果不需要修改,为什么不加const,你这样编码风格就不对
ilovewinapi 2018-03-29
  • 打赏
  • 举报
回复
char *src = "Hello";是合法的语句吗? 是合法的; Hello是常量字符串,存储在常量区,常量字符串是不能修改的。 加上赵4老师:#pragma comment(linker,"/SECTION:.rdata,RW")以后,确实能修改了。但//加这句可以让常量区可写,后果自负!
wang0635 2018-03-28
  • 打赏
  • 举报
回复
单纯看这一点,完全合法。
赵4老师 2018-03-28
  • 打赏
  • 举报
回复
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
赵4老师 2018-03-26
  • 打赏
  • 举报
回复
引用 9 楼 shihengzhen101 的回复:
[quote=引用 8 楼 zhao4zhong1 的回复:] [quote=引用 6 楼 shihengzhen101 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:]
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
你这句话可是分发了大半个论坛[/quote] 我哪句话不是分发了大半个论坛?[/quote] 说的也对啊,我竟无言以对![/quote]
AlbertS 2018-03-26
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
[quote=引用 6 楼 shihengzhen101 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:]
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
你这句话可是分发了大半个论坛[/quote] 我哪句话不是分发了大半个论坛?[/quote] 说的也对啊,我竟无言以对!
赵4老师 2018-03-26
  • 打赏
  • 举报
回复
引用 6 楼 shihengzhen101 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:]
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
你这句话可是分发了大半个论坛[/quote] 我哪句话不是分发了大半个论坛?
AlbertS 2018-03-26
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
是。在有些编译器里可能会报错,加上const就不会报错。 因此写成这样是最完备的:
const char *src = "Hello";
+1
AlbertS 2018-03-26
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
你这句话可是分发了大半个论坛
U201212499 2018-03-26
  • 打赏
  • 举报
回复
最好别这样写。一般写成 char src[] = "Hello";
  • 打赏
  • 举报
回复
字符串最好还是加上const
啊哈moment 2018-03-26
  • 打赏
  • 举报
回复
地址指向常量区 指向的内容不可修改 最好还是定义成数组
仙剑老祖 2018-03-26
  • 打赏
  • 举报
回复
是的. char *src = "Hello"; // Hello存放在文字常量区,指针src指向H这个字节的地址
YYCamille 2018-03-23
  • 打赏
  • 举报
回复
合法,变量src指向字符串Hello的首地址。
赵4老师 2018-03-23
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
paschen 2018-03-22
  • 打赏
  • 举报
回复
本来不合法,但由于历史原因以前的编译器可以通过编译,VS2017默认是不支持,要把符合模式设置为否才行
自信男孩 2018-03-22
  • 打赏
  • 举报
回复
是。在有些编译器里可能会报错,加上const就不会报错。 因此写成这样是最完备的:
const char *src = "Hello";

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧