@blog.justoneplanet.info

日々勉強

Cのスコープ

あんまり書くこともない気がする。

int counter = 0;// グローバル

int main(int argc, char *argv[])
{
    int counter = 5;// ローカル
    printf("%d", counter);
}

ちなみにブロックスコープはちゃんと存在する。

int main(int argc, char *argv[])
{
    int counter = 5;// ローカル
    printf("%d", counter);
    if(1){
        int x = 10;
    }
    // この空間ではxは不可視
}

■static変数

関数に紐づいた静的な変数で呼び出しごとに初期化されない変数。

int count()
{
    static int counter = 0;
    return counter++;
}
int main(int argc, char *argv[])
{
    printf("%d", count());// 0
    printf("%d", count());// 1
    printf("%d", count());// 2
}

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment