C++指针与字符串问题
像下面的程序:
#include<iostream>
using namespace std;
int main(){
char *string = "dddddddddddddddddddddddddddddd";
char string3[10] = {'a','a','a','a','a','a','a','a','a','\0'};
cout<<string3<<endl;
cout<<string<<endl;
//*(string+5) = '\0';
*(string3+5) = '\0';
cout<<string3<<endl;
cout<<string<<endl;
return 0;
}
string和string3如果这样定义并附值是不是一样的啊。
如果定义char *string = "ddddd";编译器是不是会转化成char string[6] = {'d','d','d','d','d','\0'};再进行处理。
为什么 *(string3+5) = '\0'; 可以运行但是 *(string+5) = '\0';(被注释的那句) 却会有运行时错误.