【发布时间】:2015-08-05 23:24:59
【问题描述】:
我正在尝试反转一个字符串(但这不是我遇到的问题)。问题是试图改变给定索引的字符串数组的值。但是,每次我尝试更改索引处的值时,都会出现总线错误。即Bus error: 10。我不确定这意味着什么。另外,我尝试了str[0] = "a",但这也给了我一个总线错误。有什么建议可以解决这个问题?
#include <iostream>
using namespace std;
void reverse(char* str){
str[0] = 'a';
}
int main(){
char* str = "hello";
reverse(str);
}
【问题讨论】:
-
字符串字面量是常量,不能修改。
-
另外:编译器应该给你一个警告,你的代码是无效的。见coliru.stacked-crooked.com/a/ef79aa4884d08883
-
str[0] = "a";绝对不应该编译。它是如何产生运行时错误的? -
您还应该收到
str[0] = "a"的错误。如果你不这样做,那么你真的需要调高编译器的诊断级别。
标签: c++