- ベストアンサー
C言語:関数を使うメリットとデメリット
C言語初心者の者です。 今度学校の授業で関数を用いるメリットとデメリットを挙げるのですが、全然思いつきません…10個も挙げなければならないのにorz どなたか親切な方、教えてくださると大変助かります! よろしくお願いします!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
結構あると思われますが、私のソフト制作経験では 以下の感じです <メリット> ・手続き処理を機能ごとに分けられる ・呼び出し元・先と分ける事で修正の削減を計れる ・再帰処理が視覚的容易に出来る ・用途により呼び出し規約式/展開式に分けれる ・多項式において部分式が冗長である時にその部分を関数として 実装することによって、単純多項式のように扱える ・プログラム構造をワーニエ法設計に基づくアーキテクチャに対し 対話的に作成できる ・大規模なプログラムとなった際にモジュール単位に分割しやすい ・キャパシティ指向におけるプログラミング設計においてその後の オブジェクト化への下準備として必須である ・関数によりデータのやり取りは、タイプに基づく為、 処理の流れの中でのデータの体裁を把握できる ・スタックの動向を抽象化できる ・名前空間による管理で詳細性質はブラックボックス化できる <デメリット> ・呼び出し元・先の処理の共通性を把握する必要がある ・ポインタを受け渡す際には有効値に注意しなければならない ・再帰処理ではネストが基本的に隠蔽されている為、意図的に 打ち切りを設ける必要がある ・名前空間において予約語などと重複しないよう把握が必要 ・各関数ではスコープ制限があるため動的なデータ源泉においては 持続性を考慮しておく必要がある ・その後の修正余地を考慮する場合、オーバーロードにおいての 把握が必要である ・関数の任意展開が出来ない場合、オーバーヘッドを無視できない ・同一スコープで関数ネストを深しすぎるとリーダビリティに欠けてしまう ・遂次型と異なり関数を多用するとフローチャートのブロック数 が増えてしまう ・関数定義においては、先定義か後定義かの順序認識の必要がある
その他の回答 (2)
- f_attck
- ベストアンサー率33% (40/118)
メリット ・可読性が上がる ・不具合発生時に切り分けがしやすい ・コード改修時に影響範囲の特定が容易 デメリット ・関数Callする分のタイムラグ(遅い) ・OSにもよるが、引数の2個目までしかレジスタに積まれない (それ以降は、高速参照できない)
お礼
アドバイスどうもありがとうございます!!とても参考になりました! 次の授業は大丈夫そうです!じっくり理解して覚えようと思います! 本当にありがとうございました!!
- jacta
- ベストアンサー率26% (845/3158)
メリット・デメリットというか、C言語では関数を用いなければ何ひとつできません。mainも関数だということを考えてみてください。 例えるなら、人生において呼吸をするメリットとデメリットを挙げるようなものです(人間が誕生したとき、最初に行わなければならないのが呼吸です)。
お礼
そうですねw 先生はそのことを意識させたくてこの課題を出したのかもしれませんww ともあれ、わざわざご意見くださってありがとうございます! もっと勉強しますねww
お礼
うわぁ!!こんなに沢山!ありがとうございます! 感謝と共に驚きが…!w これなら次の授業は大丈夫そうです! 一つ一つ噛み砕きながら理解して覚えようと思います! 本当に助かりました!ありがとうございます!