
No.1ベストアンサー
- 回答日時:
>A,Bのメモリは別でしょうか?
別です。
>staticのメモリの初期化のタイミング
コンパイルした時点です。
つまり、実行時に変更すれば、次回その関数に入った時点で、前回変更した値が読み取られます。
>test関数外からBの変数を再度初期化できるのでしょうか?
Bは関数内で定義した変数なので、関数外からは原則、アクセスできません。「原則」といったのは、その変数を指すポインタなどを使ってアクセスできるからです。
以下、ポインタを使って関数外から変数にアクセスする例です。
int *test(void)
{
static int x=1;
printf("x=%d,",x);
return &x;
}
int main(void)
{
int *xp,i;
xp = test(); // 変数のアドレスを取得
for(i=0; i<10; i++) {
(*xp)++; // 外部から変数にアクセス
test(); // アクセスされたことを確認する
}
return 0;
}
No.3
- 回答日時:
関数外の static は「そのコンパイル単位 (= ソースファイル)」からのみアクセスできる」という意味で, 「そのコンパイル単位の最初の関数が実行される直前までのどこかの時点」で初期化される.
関数内の static は「関数が終わったあとでも値が保存される」という意味で, 初期化のタイミングは「最初にそこに来たとき」じゃないかな.
No.2
- 回答日時:
> externの働きも知りたいです。
アプリケーションが複数のソースファイル(*.c)から
成り立っているとします。このとき、あるソースファイルに
extern int n;
のように書くと、どこか別のソースファイルで実体を定義(externを付けない)したnを
利用することになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# int tff(int clk) { static int state = 0; //状態 stat 1 2022/07/11 21:14
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
「fatal error C1189」を回避す...
-
” OS ビルド ” の意味が分か...
-
C言語でヘッダファイルにグロー...
-
[c++] <pthread.h>がinclude で...
-
マクロ コンパイルがグレーバック
-
<math.h>があるのにsqrtが・...
-
ビルドとリビルドの違いを教え...
-
drand48()が使えない
-
漢字のコメントをはずすとコン...
-
1 つ以上の複数回定義されてい...
-
うまくコンパイルできません
-
フォトショップでPanorama Tool...
-
fortran:includeできないとエラ...
-
PRO*C コンパイルエラー
-
extern "C" の利用方法に関して
-
ILSpyで、デコンパイルできない。
-
Borland C++ Builderで簡単なC...
-
ExcelVBAで『ByRef 引数の型が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
Makefile作成時の拡張子.oとは?
-
外部シンボル "_main"は未解決です
-
<math.h>があるのにsqrtが・...
-
ILSpyで、デコンパイルできない。
-
クリティカルエラー Expressio...
-
【VC++6.0(MFC)】警告「LINK : ...
-
マクロ コンパイルがグレーバック
-
セミコロンについて
-
複数のサブディレクトリを一緒...
-
C言語のコンパイルができません
-
PRO*C コンパイルエラー
-
ExcelVBAで『ByRef 引数の型が...
-
コンパイルエラー:ユーザ定義...
-
プリコンパイルエラーについて
おすすめ情報