可能重複時:
Why do I get a segmentation fault when writing to a string?訪問衝突錯誤逆轉串C++
下面的簡單函數應扭轉到位的字符陣列。
void reverse(char* str)
{
char* last = str;
// find end of the string
while(*last) {
++last;
}
// swap characters until the pointers meet in the middle
while(str < last)
{
--last;
char temp = *str;
*str = *last;
*last = temp;
++str;
}
}
int main()
{
char* a= "Hello";
reverse(a);
return 0;
}
代碼編譯。但它會引發有關訪問衝突的運行時錯誤。根據調試器的罪魁禍首是以下行:
char temp = *str;
任何想法爲什麼會發生?
這不再是有效的C++代碼,並有很好的理由。 – Puppy
您包含'',但不要使用任何流,並且您使用'using namespace std',但不要使用該名稱空間中的任何內容。 –
dreamlax