1

C には 3 種類の静的宣言があることを知っています。

1: 定数 - 定数静的変数、例: static const int i = 5;

2: 変更可能 - 通常の静的変数です。例: static int hi = 10;

これが私の質問です

「コード」の形をとる静的の別の形式があります。それはどういう意味ですか、例を挙げていただけますか?

ありがとうございました!

編集: static/const 変数はスタック/ヒープに格納されていますか?

4

5 に答える 5

8

多分あなたは静的関数について話しているのですか?

これは「静的」という言葉の特定の使用法であり、静的変数とはまったく異なります。

関数を「静的」と宣言すると、別のソース ファイルからリンクできないことを意味します。通常、一部の機能を「プライベート」に保つために使用されます。

[編集] 理論的には、ポインターを使用して関数コードに別のソース ファイルからアクセスすることもできますが、これは関数にアクセスするための通常の方法ではありません (そして確かに最も簡単ではありません)。それを指摘してくれた Eric Postpischil に感謝します。

残念なことに、同じ「静的」という言葉が C 標準で使用され、関数または変数に使用されるかどうかによって、2 つの異なる意味で使用されます。

[編集] : 別の質問ですが、とにかく: 静的変数の場合、それらはヒープにもスタックにも割り当てられません。それらは静的です。つまり、静的空間に割り当てられ、起動時にコンパイラによって直接割り当てられます。スタックは内部関数変数用であり、ヒープは malloc()/free() 用です。

于 2013-04-29T17:20:53.630 に答える
4

このリンクはあなたの質問に答えるはずです。

ただし、C のコンパイル プロセスに関する十分な知識がない限り、これには疑問の余地があることに注意してください。

GCC の適切なリファレンスは、ここにあります。

私はあなたが静的関数について尋ねていると信じています..だから..

静的関数

デフォルトでは、C の関数はexternです。これは、関数が同じプロジェクト (もちろん同じコード) の他のファイルで使用できることを意味します。

この状況が気に入らず、関数を定義されているファイルに制限したい場合は、それをstaticにします。

于 2013-04-29T17:19:19.693 に答える