重複の可能性:
C または C++ で文字列を元の位置に戻すにはどうすればよいですか?
この C コードがセグメンテーション違反を引き起こしているのはなぜですか?
c で char ポインタの値を変更すると segfault が生成される
非常に単純なコード例の実行
#include <stdlib.h>
#include <iostream>
char* last_char(char* s){
char* last = s;
while (*last) ++last;
return last;
}
char* in_place_reverse(char* s) {
char* left = s;
char* right = last_char(s);
char temp;
while( left < right ) {
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
return s;
}
int main(){
char * s = "letters\n";
std::cout << in_place_reverse(s);
}
私が得るすべての時間
Segmentation fault
しかし、私の観点からは、コード内で違法なことは何もしていません。何が問題なのかを判断するのを手伝ってください。
PS私はコンパイルします
g++ example.c