【发布时间】:2020-10-10 02:05:10
【问题描述】:
我有一些代码:
int main() {
const char *string1 = "foo";
char *string2 = "bar";
string1 = string2;
return 0;
}
当我构建它时,不会发出任何警告。然而,随着
int main() {
const char *string1 = "foo";
char *string2 = "bar";
string2 = string1;
return 0;
}
发出警告:
warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
string2 = string1;
^
以我目前的 C 基础知识,我会认为 string1 不会被重新分配,因为它是 const。令我惊讶的是,第一个 sn-p 中的代码构建时没有任何警告,而第二个代码 sn-p 则相反。
对发生的事情有任何解释吗?谢谢!
【问题讨论】:
-
查看为:
(const char)* string1 = ..。注意警告“..from pointer target type..”。