- 締切済み
変数宣言・変数定義のちがいって??
変数宣言・変数定義のちがいって?? 同じ意味なんでしょうか? 私の解釈では、 ・宣言っていうのは、今からこの変数を使いますよってことで。 ・定義っていうのは、実際に変数の領域をわりあてるってイメージなんですけど・・ なので、 int a; ←これは変数定義 extern int a; ←これは変数(extern)宣言 あってるでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
JIS X3010:2003では、6.7 宣言において、 意味規則 宣言は, 幾つかの識別子の解釈及び属性を指定する。識別子の定義(definition)とは, 宣言のうち次のものをいう。 - オブジェクトに対しては, そのオブジェクトの記憶域を確保する宣言 - 関数に対しては, 関数本体を含む宣言 - 列挙定数又は型定義名に対しては, その識別子の(唯一の)宣言 と規定されています。 > int a; ←これは変数定義 > extern int a; ←これは変数(extern)宣言 後者はあっています。 前者は文脈によって解釈が変わります。 ファイル有効範囲に前者の記述が現れた場合、それは「仮定義」になります。同じファイル有効範囲に、初期化子または記憶クラス指定子を伴う宣言が現れると、そちらが本当な定義になります。
- eroermine
- ベストアンサー率18% (83/444)
a function declaration with no function body. declare されたものはどこかで詳細に define されて居なければならない。 というかんじだから良いとおもいますよ。
- asuncion
- ベストアンサー率33% (2127/6289)
>・宣言っていうのは、今からこの変数を使いますよってことで。 >・定義っていうのは、実際に変数の領域をわりあてるってイメージなんですけど・ そのとおりです。 変数の定義は、当該変数の領域を確保する、という意味です。 変数の宣言は、どこか別の場所で定義した変数をそこで使う、という意味です。 したがいまして、宣言の中に定義を含むという#1さんの見解は逆です。 定義の中に宣言を含みます。
- Yanch
- ベストアンサー率50% (114/225)
c言語には、変数の型を定義する方法として、typedef と言うのが用意されていますよ。 c言語では、 ・変数の宣言 と言うと、例えば今から a と言う変数を使いますよ。 と指示します。 ・変数の定義 と言うと、変数がどんなものであるのかと言う事を指示する ものだと思われます。 ですから、変数の宣言は、変数の型も指定していると思われますから、 変数の定義も含まれていると思われます。