源代码如下:
#include <iostream>
using std::cout;
using std::endl;
//xk> 字符串翻转
void
revertString(char * str, int N)
{
int i =0, j = N - 1;
while(i < j){
str[i] ^= str[j] ^= str[i] ^= str[j]; // 这样写发生异常,因为字符串是常量
++i;
--j;
}
}
void
main()
{
//char *str = "HelloWorld"; // 这样写发生异常,因为字符串字面值是常量,不能修改
char str[] = {'H', 'e', 'l', 'l', 'o', '\0'}; // 别忘了最后的\0
// revertString(str, sizeof(str)); //error> sizeof()一个指针返回4
// revertString(str, sizeof(*str)); //error> sizeof()返回1!
revertString(str, strlen(str));
cout << str << endl;
}