#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
void strReverse(char* str);
int main()
{
char str[] = "I love you,baby!!!";//注意char* str = "I love you,baby!!!";str指向的是文字常量区,不能改变里面的值
//而char str[] = "I love you,baby!!!";则是将文字常量区的复制到了数组中,所以可以改变
strReverse(str);
cout << str << endl;
return 0;
}
void strReverse(char* str) {
if (str != NULL) {
int length = strlen(str);
for (int i = 0, j = length - 1; j > i; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
这段代码就是如果通过char* str = “I love you,baby!!!”;进行reverse,就会编译正常,但是运行出错,原因就是文字常量区中的字符串是只读的,不能改变,这里通过char str[] = “I love you,baby!!!”;将文字常量区的字符串复制到了栈中通过数组命名,这样就可以改变了,这么说就是double的内存啦。