VC反序问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 22:08:13
#include <iostream>

using namespace std;

void reverse_str(char *ch) /*使用中间变量*/
{
int len;
int i;
len = strlen(ch)-1;
char ctemp;

for(i = 0; i < len-i; i++)
{
ctemp = ch[i];
ch[i] = ch[len-i];
ch[len-i] = ctemp;
}
ch[len+1] = 0;
cout<< "fasdsaf" <<endl;

}

int main(){
char *c = "123345dff";
//reverse_str(c);

cout << c <<endl;
return 0;
}
为什么编译通过,调试总是错误, ch[len+1] = 0;这句又是什么含义

char *c = "123345dff";
这句, c是指向了一个字符串常量, 而字符串常量在内存中是在一个字符串常量存储区里, 这个存储区是只读的

所以你任何写 c[i]的行为都会造成程序崩溃

char *c = "123345dff";指针C指向的是一个字符串常量,不能指向字符串变量,常量是不能被改变的,你试图改变指针所指向的字符串常量都是不合理的