我认为中的字符串文字是const char*
类型。您不能将const char*
对象分配给非常量char*
对象。但在Visual studio 2010中,以下代码可以编译而不出错或警告,但会导致运行时错误。
int main(void)
{
char *str2 = "this is good";
str2[0] = 'T';
cout << str2;
getchar();
return 0;
}
如果我们不修改字符串的值,读取该值是没有问题的:
for(char *cp = str2; *cp !=0; ++cp) {
printf("char is %c\n", *cp);
}
getch();
return 0;
为什么我们可以在这里将一个const char*赋值给char*?