这里的字符串是c风格的字符串
以'\0'结尾
#include <stdio.h>
using namespace std;
void reverse_string_01(char *);
void reverse_string_02(char *);
void swap(char &a,char &b);
//void swap(char **a,char **b);
int _tmain(int argc, _TCHAR* sargv[])
{ char *str="abcdefghijk";
//cout<<"请输入一个字符串:"<<endl;
//gets(str);
reverse_string_01(str);
puts(str);
reverse_string_01(str);
puts(str);
system("pause");
}
void reverse_string_01(char* s)
{
if(!s) return;
char* left=s,*right=s;
while(*right)
++right;
--right;
while(right>left)
{
swap(*left++,*right--);
}
}
void reverse_string_02(char* s)
{
if(!s) return;
int n=strlen(s),i;
for(i=0;i<n/2;i++)
{
swap(s[i],s[n-i-1]);
}
}
void swap(char& a,char& b)
{
a=a^b;//为什么运行后会发生错误?
b=a^b;
a=a^b;
//char temp;
//temp=a;
//a=b;
//b=temp;
}
运行以上程序,调用到swap函数时会报这样的错:
projectOne.exe 中的 0x0090161f 处最可能的异常: 0xC0000005: 写入位置 0x00905838 时发生访问冲突
projectOne.exe 中的 0x0090161f 处有未经处理的异常: 0xC0000005: 写入位置 0x00905838 时发生访问冲突
这是为什么呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)