
No.4ベストアンサー
- 回答日時:
いろいろな概念がごっちゃになっている気がします。
この部分を曖昧にしたままで、コード片を書いて試してみても、本当に理解することは難しいでしょう。まずは、それぞれの用語の定義を再確認してください。
スコープ(=有効範囲)というのは、識別子が可視となる範囲のことで、ファイルの内外は直接関係ありません。有効範囲の種類は、関数有効範囲、ファイル有効範囲、ブロック有効範囲、および関数原型有効範囲の4種類があります。
ファイルの内外という観点であれば、#includeで取り込まれた別ファイルもファイルの外ということになりますので、より厳密には「翻訳単位」という用語を使います。
翻訳単位の外側から識別子が可視になるかどうかは、有効範囲ではなく、識別子の結合によります。結合には、外部結合、内部結合、および無結合の3種類があります。
また、ポインタを介した場合ですが、これは有効範囲や結合とは全く別の問題です。おそらく記憶域期間の概念と有効範囲を混同しているものと思います。記憶域期間には、静的記憶域期間、自動記憶域期間、および割付記憶域期間の3種類があります。
最後に、グローバル変数とかローカル変数というのは、言語規格上は定義がありませんので、あまり厳密な表現ではありません。外部結合を持つオブジェクトのみをグローバル変数と呼ぶ人もいれば、内部結合のものまで含めてグローバル変数と呼ぶ人もいるからです。
というわけで、ここまでで検索するのに必要なキーワードは列挙したつもりです。後は、ご自身で納得いくまで調べてみてください。
遅くなってしまいすいません。
関数内で有効、ファイル内で有効(グローバル変数?)、ブロック内で有効、プロトタイプ宣言内でのみ有効(?)という事ですよね。
さらに記憶域期間や結合があると。
もういっぺん頭の中整理します。詳しくありがとうございます。
No.3
- 回答日時:
回答撤回です。
安易に回答したことを反省しています。
#1で回答されているとおりで、やってみてから質問されてはいかがですか?ご質問の文面から、変数の宣言や、スコープという概念はおわかりのようですから、自分で「どうなるか試してみる」ことはできると思います。
No.2
- 回答日時:
使えます。
ただし、使う側のファイルに「別のファイルで定義されている変数(またはポインタ)ですよ」ということをexternキーワードで教えてあげる必要があります。ファイルA
int 変数名1;
int* 変数名2;
ファイルB
extern int 変数名1;
extern int* 変数名2;
void 関数(){
int n = 10;
変数名1 = 5;
変数名2 = &n;
}
別ファイルでファイルAのグローバル変数をextern宣言しないならば、ファイルA内だけのスコープですが、別ファイルでextern宣言「される可能性がないとは限らない」ので、グローバルスコープを持つと言えます。
extern宣言なしでは使えません。extern宣言をしたファイルでのみ使用可能となります。
参考URL:http://homepage1.nifty.com/aok2/004/c01.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- 数学 1変数関数に陰関数ってあるんですか? 1変数関数は f(x)=xの式 f(x)はxの値で決まるもの( 4 2023/05/08 18:47
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
クラリスインパクトに替わるソ...
-
エクセルで「特定の文字を含む...
-
TextBoxにフォーカスを与えると...
-
リストビューの選択状態を取得...
-
パソコン名、IPアドレスをH...
-
e-taxで送信ファイルの拡張子が...
-
flash (.swf) を編集したい
-
EXCELマクロでのtifファイルの...
-
Access2016のExcelインポートの...
-
スマホでtxtファイルを編集する...
-
拡張子「.IDJ」を、windo...
-
他のアプリの終了
-
マイクロミニはいくつまで穿い...
-
Ctrl+Cの動作をするvbs
-
C言語のselectでのファイルディ...
-
A4の紙に印刷されている文字を...
-
USBメモリーで無線でPC転送でき...
-
CSVを取り込んで、画像を表示す...
-
RSSフィードと無断転載について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
複数のブックを新しいブックのS...
-
拡張子「.IDJ」を、windo...
-
A4の紙に印刷されている文字を...
-
PC内で速度を遅くした音源をCD...
-
2枚、マイクロSDカードを入...
-
GIMP separate+プラグイン クラ...
-
リストビューの選択状態を取得...
-
Accessのソースが見れない
-
eclipseでタブ入力ができなくな...
-
スマホでtxtファイルを編集する...
-
TextBoxにフォーカスを与えると...
-
ファイル数と合計サイズの取得方法
-
リストビューで選択行の背景を...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
garagebandのLR Mixの方法について
-
クラリスインパクトに替わるソ...
-
エアコンの冷媒 R410Aの重...
おすすめ情報