C言語なら俺に聞け(入門篇) Part 44
■ このスレッドは過去ログ倉庫に格納されています
0155122
2009/02/11(水) 21:16:35ご指摘頂きありがとうございます。
変換指定子を十分意識できていませんでした。
たびたび申し訳ありませんが、
>>136を一部改良した、以下の2つのコードについての私の理解を以下に記載しました。
私の理解に問題がないか、回答よろしくお願いします。
int main(void)
{ char *MojiC;
printf("MojiC = "); scanf("%c", MojiC);
return(0); }
では、char *MojiC; の箇所でMojiCに適当なアドレス値が入る(明示的なメモリ領域は確保されない)。
このとき、アクセスしてはいけない(あるいは存在しない)アドレス値がMojiCに割り当てられると、
scanf("%c", MojiC); の箇所で、キーボードから入力された文字をアクセスしてはいけない(あるいは存在しない)メモリ領域に
書き込もうとするが、アクセスできないので Segmentation fault (core dumped) というエラーが発生した。
このような、明示的に確保されていない領域へアクセスすることになるプログラムは作ってはならない。
int main(void)
{
char MojiC;
printf("MojiC = "); scanf("%c", &MojiC);
return(0);
}
では、char MojiC; の箇所でchar型のMojiCを格納するためのメモリ領域が明示的に確保される。
scanf("%c", &MojiC); の箇所で、MojiCのために確保された1バイトの領域にキーボードから入力された文字が保存される。
■ このスレッドは過去ログ倉庫に格納されています