No.1ベストアンサー
- 回答日時:
いろんなところでしょう。
プログラマの負担はむしろ重いです。
○多くの言語では、サブルーチンや関数は、どんな順番で宣言しても、同じように利用できます。
C言語は、先に宣言しないと使えません。
プログラマとしては、場所を考えないといけないので面倒ですが、コンパイラにとっては上から順番に処理すればいいので簡単になります。
※ 他の言語では、「とりあえず保留しておいて、宣言が見つかったら戻る」とか「最初に宣言の一覧を作るために読み込んで、そのあと頭に戻ってコンパイルしなおす」とかの工夫が必要です。
○一番はっきりと違いが出るのは配列でしょう。
他の言語では、添字がちゃんと確保した範囲になっているかチェックし、エラーを出したり、自動で範囲を増やしたりします。
C言語では、そのようなチェックはありません。範囲も増えません。
範囲内で使うように、プログラマが注意しないといけません。
そのかわり「チェックする」動作が無い分、プログラムが軽くなります。
範囲のチェックをしないので、範囲外にアクセスしても、律儀に該当するアドレスにアクセスしにいきます。
例えば int a[10] ;としたとき、 a[10000]=0 ; としても、それ自体はエラーではありません。
しかし、実際にはエラーになることも多いです。
それは、a[10000]のアドレスがOSで保護されているとか、プログラムの他の変数の領域を書き換えてしまったからとかいった理由からです。
まったく影響の無い領域になっていて、何事もなく処理が続く場合もあります。
このような配列の仕様は、脆弱性にもつながります。
例えば、文字列は文字の配列です。\0までが区切りです。
この区切りを忘れると、本来の文字列の範囲を越えて、\0が見つかるまで文字列だと認識します。
ユーザー名だけprintfしようとしたのに、\0が入ってなかったため、続けてパスワードまで表示してしまった、等ということが起りかねません。
この回答へのお礼
お礼日時:2015/05/09 17:08
わかりやすい回答ありがとうございます。
要するに作りが簡素であるためエラーチェックなども不十分ということですね。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 日用品・生活雑貨 折り畳み傘で、閉まった時のサイズはコンパクトで開いたら大きく、軽量のオススメありますか? 価格は35 4 2022/05/22 11:05
- 日用品・生活雑貨 折り畳み傘で、閉まった時のサイズはコンパクトで開いたら大きく、軽量のオススメありますか? 価格は35 2 2022/05/15 01:49
- ドライブ・ストレージ cドライブの容量軽減についてです。 cドライブの容量を軽減する為にフォルダーをD:に移動をしたいので 3 2023/03/26 15:09
- ノートパソコン パソコンでmp4の動画ファイルを10個くらい(合計20GB)をフォルダに入れて、容量を軽くしてしまお 2 2023/02/06 02:08
- iPhone(アイフォーン) PITAKA のMagEZ Gripというスマホリングを買えるショッピングサイトを教えて下さい。 ス 1 2023/02/07 20:29
- バッテリー・充電器・電池 ポータブル電源のジャクリ2000Pro を下記のバッテリーのシガーソケットで充電すると、何時間でモバ 3 2023/01/26 18:56
- 国産車 レシプロエンジンが進化しすぎと世界的なEVへの転換も加わるとロータリーエンジンの新型車はもう出ないで 4 2022/09/02 01:05
- エアガン・モデルガン AR-556 と SAINT 5.56 は、重量を比較したら どっちの方がより軽量なのか? 1 2022/08/31 20:54
- 格闘技 近年、階級別の競技で体重超過が話題になりますが、 あれってそもそもが不思議ですよね。 試合開始直前に 2 2023/07/02 22:08
- その他(自転車) e-bikeの重量について 2 2023/08/24 21:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# Listを使わずに2次元配列の...
-
VBからDLLへ多次元配列を渡す/...
-
アルファベットの配列を数字の...
-
C言語の本について
-
配列を使わずに、変数名を動的...
-
C言語 配列の長さの上限
-
mallocの確保要素数の限界は?
-
【速いブラインドタッチ】手を...
-
C言語で特定列だけを抽出して配...
-
C言語で巨大配列を作るにはどう...
-
パイソンの
-
配列で格納したものをmsgboxで...
-
暗号の桁数について
-
VBでC言語のポインタみたい...
-
RGB値を画像(PNG・BMPJPEGなど)...
-
配列内の文字間を排他的論理和...
-
C言語の課題が出たのですが自力...
-
mallocについて
-
nullと""、\\0とEOFの違いにつ...
-
fopne で失敗する原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
配列の参照渡しで型が一致しま...
-
C# Listを使わずに2次元配列の...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
パイソンの
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
unsigned char配列への入力の仕方
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C言語で特定列だけを抽出して配...
-
擬似コード 長さがmの配列でな...
-
メモリの初期値
-
C言語初心者 構造体 課題について
おすすめ情報