2017-11-02 9 views
0

構造体がローカルである場合に、関数呼び出しを介して構造体のメンバ値を保持できる方法があるかどうかは疑問でした。プリミティブデータ型の場合、それらを静的として宣言し、データは関数呼び出し全体で保持されます。構造体が呼び出し側で定義されている場合、またはグローバル変数として定義されている場合は、これを保持できます。しかし、関数呼び出しのあいだにローカル構造体の値を保持する他の選択肢があるかどうか不思議です。構造体のメンバ値を関数呼び出しに渡って保持する

struct A 
{ 
    int mem1; 
} 

void f1(void) 
{ 
    struct A var1; 
/*Now this var1 is a local variable. Declaring it as static will not help to retain value of mem1 across function calls I guess. */ 
} 
+1

'static'はデータ型に関係なく動作するはずです。あなたがそれを働かせることができないなら、それがうまくいかない例を投稿してください。 – dbush

+0

関数呼び出しではどういう意味ですか?ポインター –

答えて

0

wikipediaに記載されている、とだけステージを設定する:

...静的(スタティック 変数として)寿命および可視性(結合に依存する)の両方を制御する予約語であります。単語staticは で、CなどJavaの影響を受ける言語でも使用されます。

スタティックはストレージクラスとして定義されます。ストレージクラスは、変数および/または関数のスコープおよびライフタイムを定義しました。タイプの前にストレージクラスがあります。それが原始かどうかに関わらず。

+0

という魔法の言葉を探しているのでなければ、ローカル変数であってもスコープ内でメンバを保持することができます。しかし、私の主な質問は構造体メンバ(C++の場合はクラスメンバに関して)であり、関数呼び出し間で保持メンバの値 – Rajesh

関連する問題