【发布时间】:2021-05-11 13:34:24
【问题描述】:
创建字符串有以下两种形式:
const char* pt1 = "Hello";
char* pt2 = "Goodbye";
上面const有什么用?据我了解,这样做:
ptr = "Adios";
两者都适用,因为这会更改指针的地址,但尝试更改字符串中的字母对两者都将失败:
const char* pt1 = "Hello";
编译器错误:分配了只读位置
char* pt2 = "Goodbye";
运行时错误:段错误,正在尝试更改 .rodata
由于它们产生相同的结果——即错误——在定义字符串时使用const 有什么好处吗?
【问题讨论】:
-
Since they produce the same outputcompiler error: assignment of read-only location绝对不同于runtime error: seg fault, trying to change .rodata。 -
但是你想什么时候失败?当你编译你的程序,或者当你的客户购买了你的程序并且你发送了你的程序并且它出现了故障,所以你必须退款?
compiler error和runtime error之间有一个特定的区别 - 第一个很容易检测和修复。另一个是程序错误,可能会造成灾难性后果。 -
@samuelbrody1249 你必须在别人的名字前加上@符号来通知他。
-
@KamilCuk 我明白了,所以基本上你能做的任何事情都可以让编译器捕捉到错误,对吧?
-
是 - 静态代码分析非常优于运行时错误。
标签: c