C++的只读内存怎么改

/*
编写函数把参数字符串中的字符反序排列, 函数原型:
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);
}

char *st="abcdefg";的时候,该字符串是存放在全局常量区,是属于堆里的,你没有权限进行修改的 char str[]="abcdefg"则是在main 函数的栈里开辟的,用户可以修改,且函数结束,自动释放 这才是原因,分清楚各种变量是如何存储的。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  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);//只帮改了个地方吧...^_^
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网