「覚え間違い」を教えてください!

変数宣言・変数定義のちがいって??
同じ意味なんでしょうか?

私の解釈では、
・宣言っていうのは、今からこの変数を使いますよってことで。
・定義っていうのは、実際に変数の領域をわりあてるってイメージなんですけど・・

なので、
int a; ←これは変数定義
extern int a; ←これは変数(extern)宣言

あってるでしょうか?

A 回答 (4件)

JIS X3010:2003では、6.7 宣言において、



意味規則 宣言は, 幾つかの識別子の解釈及び属性を指定する。識別子の定義(definition)とは, 宣言のうち次のものをいう。
- オブジェクトに対しては, そのオブジェクトの記憶域を確保する宣言
- 関数に対しては, 関数本体を含む宣言
- 列挙定数又は型定義名に対しては, その識別子の(唯一の)宣言

と規定されています。

> int a; ←これは変数定義
> extern int a; ←これは変数(extern)宣言

後者はあっています。
前者は文脈によって解釈が変わります。
ファイル有効範囲に前者の記述が現れた場合、それは「仮定義」になります。同じファイル有効範囲に、初期化子または記憶クラス指定子を伴う宣言が現れると、そちらが本当な定義になります。
    • good
    • 0

a function declaration with no function body.



declare されたものはどこかで詳細に define されて居なければならない。
というかんじだから良いとおもいますよ。
    • good
    • 0

>・宣言っていうのは、今からこの変数を使いますよってことで。


>・定義っていうのは、実際に変数の領域をわりあてるってイメージなんですけど・

そのとおりです。
変数の定義は、当該変数の領域を確保する、という意味です。
変数の宣言は、どこか別の場所で定義した変数をそこで使う、という意味です。
したがいまして、宣言の中に定義を含むという#1さんの見解は逆です。
定義の中に宣言を含みます。
    • good
    • 0

c言語には、変数の型を定義する方法として、typedef と言うのが用意されていますよ。



c言語では、
・変数の宣言
と言うと、例えば今から a と言う変数を使いますよ。
と指示します。

・変数の定義
と言うと、変数がどんなものであるのかと言う事を指示する
ものだと思われます。

ですから、変数の宣言は、変数の型も指定していると思われますから、
変数の定義も含まれていると思われます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報