プログラミングのプロトタイプとは何ですか?

Grimkath

これは言語に関する特定の質問ではありませんが、プログラミング全般に関する質問です。この質問は、最近C ++コースで学んだ「関数プロトタイプ」について友人と議論を始めた後に出されました。プロトタイプはコードの最初に作成する必要がある関数ヘッダーであるため、コンパイラーは実行時に実際の関数に到達する前にスペースを割り当てることを彼に伝えました。次に、関数プロトタイプを利用しない他のプログラミング言語(javaやpythonなど)が実際にC ++と同様のシステムを持っているかどうかについて、とりとめのない話を始めました。ユーザーに作成してもらいます。

それで、私たちは知りたいのですが、結局のところ、関数プロトタイプとは何ですか?それらはC / C ++でのみ説明責任がありますか、それとも他のプログラミング言語がそれらを利用していますか?そして、それは私が将来のプログラマーとしてもっと発展させる必要があるものですか?助けてくれてありがとう!

ジョン・ボード

CおよびC ++に関して、「プロトタイプ」という単語は特定の宣言構文を指します。

Cの初期のバージョンでは、関数定義は次のように記述されていました。

int func( arg1, arg2, arg3 ) // no types in argument list, just identifiers
  int arg1;
  double arg2;
  char *arg3;
{
  // function body
}

と宣言は次のように書かれました

int func( ); // no argument list

関数の引数リストには識別子のみが含まれ、タイプ情報は含まれていませんでした。これは個別に提供されました。関数宣言には引数は含まれず、戻り値の型のみが含まれていました。

C ++が導入され、Cは後にプロトタイプ構文の概念を採用しました。この概念では、タイプ情報が両方の定義のパラメーターリストに含まれています。

int func( int arg1, double arg2, char *arg3 )
{
  // function body
}

と宣言

int func( int, double, char * );

これにより、コンパイラーは、実行時まで問題があるかどうかを確認するのではなく、関数呼び出しの引数のとタイプをチェックし、それらが一致しない場合は診断を発行できました。

古いスタイルの関数宣言と定義構文は引き続きサポートされていますが、新しいコード開発には使用しないでください。プロトタイプ構文は標準ではなく標準であるため、「プロトタイプ」という言葉は冗長になりつつあります。例外。

Fortran、Pascal、Adaなどの静的に型付けされた言語にはすべて個別の関数宣言がありますが、それらの宣言をプロトタイプとは呼びません。また、Cの場合、「プロトタイプ」とは、それ自体の宣言だけでなく、特定のスタイルの関数宣言と定義を指します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログラミングの備品とは何ですか?

分類Dev

リアクティブプログラミングとイベント駆動型プログラミングの違いは何ですか?

分類Dev

並行プログラミングと並列プログラミングの違いは何ですか?

分類Dev

並行プログラミングと並列プログラミングの違いは何ですか?

分類Dev

宣言型プログラミングと命令型プログラミングの違いは何ですか?

分類Dev

並行プログラミングと並列プログラミングの違いは何ですか?

分類Dev

進化的プログラミングと遺伝的プログラミングの違いは何ですか?

分類Dev

プログラミングでは、式とは何ですか?

分類Dev

プログラミングでは、式とは何ですか?

分類Dev

宣言型プログラミングとは何ですか?

分類Dev

微分可能プログラミングとは何ですか?

分類Dev

Rプログラミングでは、&と&&の違いは何ですか?vs ||

分類Dev

ウィキペディアのプログラミングタイプの名前は何ですか?

分類Dev

アスペクト指向プログラミング-「cflow」とは何ですか?

分類Dev

関数型プログラミングの代数的構造とは何ですか?

分類Dev

インタプリタまたはコンパイルされていない場合のプログラミング言語とは何ですか

分類Dev

Scalaまたは関数型プログラミングのコンビネータとは何ですか

分類Dev

プログラミングにおけるインスタンスの意味は何ですか?

分類Dev

Javaのコンポーネント指向プログラミングとは何ですか?

分類Dev

$ GOPATHの背後にあるプログラミングパラダイムとは何ですか?

分類Dev

パイプは何をん(|)MLプログラミングに意味ですか?

分類Dev

イベントドリブンプログラミングは非同期プログラミングと同じものですか?

分類Dev

「|」とは C#プログラミングの意味ですか?

分類Dev

Mac / iOSプログラミングでは、「FoundationObject」とは何ですか?

分類Dev

Goプログラミング言語の本のエコープログラムの「sep」のポイントは何ですか?

分類Dev

ソケットプログラミング-listen()とaccept()の違いは何ですか?

分類Dev

「プロジェクト」とは何ですか?(Intellijプラグイン)

分類Dev

ネットワークプログラミングにおけるストリームとデータグラムの違いは何ですか?

分類Dev

RESTfulプログラミングとは正確には何ですか?

Related 関連記事

  1. 1

    プログラミングの備品とは何ですか?

  2. 2

    リアクティブプログラミングとイベント駆動型プログラミングの違いは何ですか?

  3. 3

    並行プログラミングと並列プログラミングの違いは何ですか?

  4. 4

    並行プログラミングと並列プログラミングの違いは何ですか?

  5. 5

    宣言型プログラミングと命令型プログラミングの違いは何ですか?

  6. 6

    並行プログラミングと並列プログラミングの違いは何ですか?

  7. 7

    進化的プログラミングと遺伝的プログラミングの違いは何ですか?

  8. 8

    プログラミングでは、式とは何ですか?

  9. 9

    プログラミングでは、式とは何ですか?

  10. 10

    宣言型プログラミングとは何ですか?

  11. 11

    微分可能プログラミングとは何ですか?

  12. 12

    Rプログラミングでは、&と&&の違いは何ですか?vs ||

  13. 13

    ウィキペディアのプログラミングタイプの名前は何ですか?

  14. 14

    アスペクト指向プログラミング-「cflow」とは何ですか?

  15. 15

    関数型プログラミングの代数的構造とは何ですか?

  16. 16

    インタプリタまたはコンパイルされていない場合のプログラミング言語とは何ですか

  17. 17

    Scalaまたは関数型プログラミングのコンビネータとは何ですか

  18. 18

    プログラミングにおけるインスタンスの意味は何ですか?

  19. 19

    Javaのコンポーネント指向プログラミングとは何ですか?

  20. 20

    $ GOPATHの背後にあるプログラミングパラダイムとは何ですか?

  21. 21

    パイプは何をん(|)MLプログラミングに意味ですか?

  22. 22

    イベントドリブンプログラミングは非同期プログラミングと同じものですか?

  23. 23

    「|」とは C#プログラミングの意味ですか?

  24. 24

    Mac / iOSプログラミングでは、「FoundationObject」とは何ですか?

  25. 25

    Goプログラミング言語の本のエコープログラムの「sep」のポイントは何ですか?

  26. 26

    ソケットプログラミング-listen()とaccept()の違いは何ですか?

  27. 27

    「プロジェクト」とは何ですか?(Intellijプラグイン)

  28. 28

    ネットワークプログラミングにおけるストリームとデータグラムの違いは何ですか?

  29. 29

    RESTfulプログラミングとは正確には何ですか?

ホットタグ

アーカイブ