作者uni1021 (小李)
看板C_and_CPP
标题[问题] 字串反转问题
时间Sun Oct 29 20:46:32 2017
void reverse(char[]);
int main()
{
char *str="12345";
reverse(str);
puts(str);
free(str);
system("pause");
return 0;
}
void reverse(char str[])
{
unsigned int i,j=strlen(str)-1;
for(i=0;i<j;++i,--j)
{
char temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
执行後发生错误
爬文後有人说char *str="12345";
只能读 不能改
不太明白..会什麽指到的值不能改?!
这个宣告 也是分配一块记忆体存"12345\0"不是吗?!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.164.58.27
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1509281194.A.C04.html
1F:推 xie29: 应该是因爲你丢给str的是ㄧ个字面常数,所以不能改里面的值 10/29 20:58
2F:→ stupid0319: 用malloc吧,再strcpy 10/29 20:59
3F:→ stupid0319: 要强硬改的话要修改分页档属性,很麻烦呢 10/29 21:00
4F:推 suwako: 你改成char str[] = "12345";就可以了 10/29 21:14
5F:→ caras: 置底十三诫之第四诫 10/29 22:04
6F:推 steve1012: 他是constant 当然不能改 10/30 01:15
7F:→ stupid0319: 当然也不是完全改不了,知道些原理比较好 10/30 01:40
8F:→ stupid0319: char*字串放哪,char[]放哪,什麽的弄清楚就会了 10/30 01:41
9F:推 peterwu4: 有时侯,指标就只是指标而已,不要有过多的期望~~ 指过 10/30 10:34
10F:→ peterwu4: 去而已 10/30 10:34
11F:推 sss81521: 只能用strcpy swap 10/30 11:14
12F:推 sss81521: 如果用Char *str 10/30 11:16