teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2017/04/21 11:50

投稿

HogeAnimalLover
HogeAnimalLover

スコア4853

answer CHANGED
@@ -1,5 +1,5 @@
1
- 変数の場合は宣言と定義に違いは事実上ありません。これらに違いが生じるのは関数とか構造体の場合です。
1
+ 変数の場合は宣言と定義に違いは事実上ありません。これらに違いが生じるのは関数とか構造体の場合です。変数の場合について考えても答えは出ません。
2
2
 
3
- とえば関数の場合はプロトタイプ宣言という言葉があります。これは関数の名前と引数、戻り値だけを決めるもので、具体的な処理の記述は行いません。こが定義との違いです。
3
+ 宣言はあくまでも「ユーザ定義の語」を取り決めるだけです。しがって、関数の場合はプロトタイプ宣言という概念(関数の名前と引数、戻り値だけを決めるもので、具体的な処理の記述は行わな)が存在し、定義と宣言が異なり一方で、**「変数の場合は語を宣言すると自体が定義」**ですから、事実上、宣言と定義が同一となります
4
4
 
5
- 具体例を挙げます。fという関数が内部的に別の関数gをそし関数g内部的に関数fを呼び出しえるものだとします。この場合どのようにプログラムをコンパイルしても、コンパイル中に未宣言のトークンを見つけることとります。従って、あらかじめトークンを宣言しておかないコンパイルをできないものるため、プロトタイプ宣言が必要となります。
5
+ もちろん言語によっは違いもしせんがともC場合はこうなります。