C言語詳しい人来てください

■ このスレッドは過去ログ倉庫に格納されています
1以下、5ちゃんねるからVIPがお送りします2018/10/16(火) 16:07:03.361ID:SAWCKBQy6
ポインタでこの文章はMacだとBus errorとなるのですが、なぜだめなのでしょうか?
#include <stdio.h>
#include <stdlib.h>

int
main(void){
char *s = "test";
s[0] = '0';
printf("%s\n",s);
}

2以下、5ちゃんねるからVIPがお送りします2018/10/16(火) 16:11:21.082ID:G33Lw7Hz0
ポインタで定義してるから定数扱い
後のs[0] = '0';が問題

配列で定義したら問題ない

3以下、5ちゃんねるからVIPがお送りします2018/10/16(火) 16:16:29.141ID:SAWCKBQy6
>>2
*s = '0';
なら大丈夫ですか?

4以下、5ちゃんねるからVIPがお送りします2018/10/16(火) 16:23:42.571ID:G33Lw7Hz0
それだとポインタの型が定義されてないからエラー

char *s = "test";

char s[] = "test";

こう。配列なら内容変更可。定数は変更不可

■ このスレッドは過去ログ倉庫に格納されています