0

ここで私は基本的な疑問を持っています。ここでは、グローバル変数を返す必要はないと言っています。
さて、私がreturnグローバル変数である場合 (それをcharorintまたはその他のデータ型にする)、それはどのような恐ろしいことを引き起こすのでしょうか? 関数から変数を取得すると、変数がすぐに破棄される
ことを知っています。 その変数に割り当てられたメモリが割り当て解除/解放されるということですか? 誰かが光を当てることができますか? 次のコードを検討してください。return

#include<stdio.h>  

int var;  //a global int

int MyFuction(void)
{
    int temp_var = 0;
    temp_var++;
    return temp_var; //it will get destroyed after returning
}

int main(void)  
{
    MyFunction();
    var++; 
    return var; //Will it get destroyed here, (var being a global variable)? 
}
4

3 に答える 3

0
int main(void)  
{
    MyFunction();
    var++; 
    return var; //Will it get destroyed here, (var being a global variable)? 
}

いいえ、そうはなりません。(ここのような) 静的な保存期間を持つオブジェクトはvar、プログラムの終了時に破棄されます。

于 2013-07-20T19:09:03.870 に答える
0

varreturnステートメントの後に破棄されないgloabl変数です。その寿命はプログラムが実行されるまでであり、スコープはコード内のすべての場所にあります。

関数にローカルな変数のみが範囲外になり、return ステートメントの後に破棄されます。

注: ライフとスコープの 2 つがあります。ローカル変数の寿命は、関数が戻るまでです。スコープは関数内にあり、そのメモリはスタックから取得されます。グローバル変数の寿命はプログラムが終了するまでであり、スコープは C のあらゆる場所にあります。

于 2013-07-20T19:09:31.017 に答える
0

グローバル変数は、プログラム全体の寿命 (アクセス可能になるまでの時間) があるため、破棄されません。

于 2013-07-20T19:13:12.470 に答える