c++
の文字列リテラルは の型だと思いますconst char*
。const char*
また、オブジェクトをオブジェクトに割り当てることはできませんnon-constant 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* に代入できるのでしょうか?