No.2ベストアンサー
- 回答日時:
> 以下のコードの場合変数aは外部結合ですか
> それとも外部結合以外となるのでしょうか。
内部結合です。
ファイル有効範囲で宣言した関数・オブジェクトの結合は、大雑把にいうと次のような基準で決まります。
・externが付けば外部結合
・staticが付けば内部結合
・externもstaticも付かなければ外部結合
ただし、externもstaticも付かない場合、同一翻訳単位に同名の関数・オブジェクトの宣言があり、そちらにexternまたはstaticが付いているならそれに従います。
具体的には、
int a;
static a;
とあれば、aは内部結合になります。
> 識別子の宣言に対し同一ソースファイル内の関数内で
> その識別子の定義がある場合、その識別子は外部結合か
> どうかが知りたいのです。
void f(void)
{
static int a;
extern int b;
int c;
}
とある場合、bは外部結合ですが、他は「結合なし」です。
No.4
- 回答日時:
関数の外で定義した変数は、全て静的変数になります。
本来、全て静的変数なので、あえてstaticを付ける必要はありません。
しかし、関数の外で定義した変数は「外部参照可能か、外部参照不可で翻訳単位内(1つのソース内)のみで参照可能か」の2通りがあります。
そこで、この2つを区別する為「静的変数を意味するキーワードstaticを流用」して、
static付き→外部参照不可
static無し→外部参照可
と言う事にしてしまいました。
本当であれば「private」とかって修飾子でも追加して、
private int a;
とでも書いたら「外部参照不可」にすれば良かったのですが、staticが流用されてしまった為、外部参照不可にする場合は
static int a;
と書く事になっています。
No.3
- 回答日時:
関数の外で static 属性を付けて定義した変数は、
当該変数の定義を含んでいるソースファイルに
存在するすべての関数からアクセス可能です(ファイルスコープ)。
当該プログラムが当該ソースファイルを含む
複数のソースファイルで構成していて、
当該ソースファイルと同様に他のソースファイルにおいても
関数の外で static int a; と定義した場合、
当該ソースファイルにおける変数 a と
他のソースファイルにおける変数 a とは
別々の領域に確保します。互いのアクセスは不可です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
CSVファイルへの保存の際、デー...
-
バッチで118項目のCSVを処理し...
-
分割コンパイルの#defineについて
-
VBに、Cのincludeのようなもの...
-
ドラッグアンドドロップでファ...
-
テキストファイルの最終行を削...
-
CSVファイルの入出力と計算
-
ハッシュの計算時間について
-
C++でプログラミングを行ってい...
-
C言語のヘッダファイルの使い方
-
VB6でのファイル作成方法
-
大きいサイズのテキストファイ...
-
Excelマクロでの再読込み方法
-
ShellExecuteEx→WaitForSingleO...
-
VB.NETによるプロセス間通信
-
SGファイルって何ですか?
-
fopenできる上限の変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
テキストファイルの最終行を削...
-
CSVファイルへの保存の際、デー...
-
VBに、Cのincludeのようなもの...
-
分割コンパイルの#defineについて
-
SGファイルって何ですか?
-
グローバル変数のよくない使い...
-
Excelマクロでの再読込み方法
-
iniファイルに追記がしたいです。
-
ASP .NETでファイル選択ダイア...
-
ハッシュの計算時間について
-
バッチで118項目のCSVを処理し...
-
FileOpen 関数で既にファイル...
-
Javascript で INI の読み書き
-
fopenできる上限の変更
-
VBAにてEXCEL以外のファイル(テ...
-
マウスポインタの変更
-
C言語のfopenについて教えてく...
おすすめ情報