Som*_*ame -1 c arrays pointers segmentation-fault string-literals
我对这种行为感到很困惑:
int main(void) {
char *test_string = "test_string";
*test_string = 'a'; //segfaults
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int main(void) {
char test_string[] = "test_string";
*test_string = 'a'; //OK
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我预计它应该有相同的工作,因为N1570, Section 6.3.2.1(p3)声明如下:
除非它是运算
sizeof符,_Alignof运算符或unary &运算符的操作数,或者是用于初始化数组的字符串文字,否则具有类型''数组'类型'的表达式将转换为类型为''指针的表达式键入''指向数组对象的初始元素,而不是左值.
为什么第一个段错?
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |