C++的只读内存怎么改

/*编写函数把参数字符串中的字符反序排列,函数原型:voidreversestr(char*str)使用指针,不要使用数组下标,也不要声明局部数组来临时存储。*/#inc... /*
编写函数把参数字符串中的字符反序排列, 函数原型:
void reversestr(char * str)
使用指针,不要使用数组下标,也不要声明局部数组来临时存储。*/
#include "iostream"
using namespace std;
int string_length(char *str)
{
int i=0;
for(;*(str+i)!='\0';i++);
return i;
}
void reversestr(char *str)
{
int i=string_length(str);
char t;
for(int j=0;j<i/2;j++)
{
t=*(str+j);
*(str+j)=*(str+i-j-1);
*(str+i-j-1)=t;

}
for(int k=0;k<=i;k++)cout<<(*(str+k));

}void main()
{
char *st="abcdefg";
reversestr(st);
}
展开
 我来答
匿名用户
2013-10-21
展开全部
char *st="abcdefg";的时候,该字符串是存放在全局常量区,是属于堆里的,你没有权限进行修改的 char str[]="abcdefg"则是在main 函数的栈里开辟的,用户可以修改,且函数结束,自动释放 这才是原因,分清楚各种变量是如何存储的。。
匿名用户
2013-10-21
展开全部
#include "iostream"
using namespace std;
int string_length(char *str)
{
int i=0;
for(;*(str+i)!='\0';i++);
return i;
}
void reversestr(char *str)
{
int i=string_length(str);
char t;
for(int j=0;j<i/2;j++)
{
t=*(str+j);
*(str+j)=*(str+i-j-1);
*(str+i-j-1)=t;
}
for(int k=0;k<=i;k++)
cout<<(*(str+k));
}void main()
{
char st[]="abcdefg";
reversestr(st);//只帮改了个地方吧...^_^
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式