次のプログラムがあります。
#include <iostream>
using namespace std;
void reverseString(char* first, char* last)
{
while(first < last)
{
cout << *first << " " << *last << endl; //for debugging; prints 'H' and 'o' then crashes
char temp = *last;
*last = *first; //this line crashes the program
*first = temp;
first++;
last--;
}
}
int main()
{
char* s = "Hello";
reverseString(s, s + strlen(s) - 1);
cout << s << endl;
}
ただし、ポインターが指す値を交換するのに問題があります。*p = *p1 は、p のポイント先の値を p1 のポイント先の値に設定するだけでよいと考えましたが、何かがおかしいようです。助けてくれてありがとう!