このウェブサイトで私が持っている質問に最も近い質問には、満足できない回答がいくつかありました。
基本的に、関連する 2 つの質問があります。
Q. 次のようなことをすると:
char a[]= "abcde"; //created a string with 'a' as the array name/pointer to access it.
a[0]='z'; //works and changes the first character to z.
しかし
char *a="abcde";
a[0]='z'; //run-time error.
違いはなんですか?「const」宣言がないので、中身は自由に変更できるはずですよね?
Q. 次のようなことをすると:
int i[3];
i[0]=10; i[1]=20; i[2]=30;
cout<<*++i; //'i' is a pointer to i[0], so I'm incrementing it and want to print 20.
これにより、コンパイル時にエラーが発生しますが、その理由がわかりません。
一方、これは機能します:
int *i=new int[3];
i[0]=10; i[1]=20; i[2]=30;
cout<<*++i; //Prints 20.
助けてくれてありがとう。