文字列は書き込み禁止領域にあるはずなのですが、上のコードのようにポインタ配列だと、(str+1)の値を変更できないのですが、下のコードの場合(str+1)の値を変更できるのはなぜでしょうか?
C
1#include <stdio.h> 2 3int main(void) 4{ 5 char *str = "abc"; 6 printf("%s\n", str); 7 *(str+1) = 'd'; 8 printf("%s\n", str); 9 return 0; 10}
C
1#include <stdio.h> 2 3int main(void) 4{ 5 char str[] = "abc"; 6 printf("%s\n", str); 7 *(str+1) = 'd'; 8 printf("%s\n", str); 9 return 0; 10}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/31 06:23