Aracılığıyla paylaş


dış depolama sınıfı Belirleyicisi

İle bildirilen bir değişken extern depolama sınıfı Belirleyicisi olan herhangi bir program kaynak dosyalarını harici düzeyinde tanımlanan aynı ada sahip bir değişkenin başvurusu.İç extern bildirimi harici düzeyi değişken tanımı blok içinde görünür hale getirmek için kullanılır.Aksi halde dış düzeyinde bildirilen sürece, bir değişken ile bildirilen extern anahtar sözcüğü yalnızca bloğunda görünür içinde olduğu bildirildi.

Örnek

Bu örnekte, iç ve dış düzeyi bildirimlerini gösterilmektedir:

// extern_StorageClassSpecified.c
#include <stdio.h>

void other( void );

int main()
{
    // Reference to i, defined below: 
    extern int i;

    // Initial value is zero; a is visible only within main: 
    static int a;

    // b is stored in a register, if possible: 
    register int b = 0;

    // Default storage class is auto: 
    int c = 0;

    // Values printed are 1, 0, 0, 0: 
    printf_s( "%d\n%d\n%d\n%d\n", i, a, b, c );
    other();
    return;
}

int i = 1;

void other( void )
{
    // Address of global i assigned to pointer variable:
    static int *external_i = &i;

    // i is redefined; global i no longer visible: 
    int i = 16;

    // This a is visible only within the other function: 
    static int a = 2;

    a += 2;
    // Values printed are 16, 4, and 1:
    printf_s( "%d\n%d\n%d\n", i, a, *external_i );
}

Bu örnekte, değişken i başlangıç değeri 1 ile dış düzeyinde tanımlanır.Bir extern bildiriminde main işlev düzeyi dış başvuru bildirmek için kullanılan i.Statik değişken a Başlatıcı atlanmış olduğundan varsayılan olarak 0 olarak başlatılır.Çağrı printf 1, 0, 0 ve 0 değerlerini yazdırır.

De other işlevi, genel değişkeni adresini i başlatmak için kullanılan statik işaretçi değişkeni external_i.Genel değişken olduğu için bu çalışır statik yaşam, adresini değiştirme sırasında program yürütme anlamına gelir.Sonraki, değişken i ilk değeri 16 olan yerel bir değişken olarak tanımlandı.Bu şemadaki dış düzeyi değerini etkilemez i, yerel değişken adı kullanılarak gizli.Genel değerini i şimdi yalnızca dolaylı olarak erişilebilir olan işaretçi üzerinden bu blok içinde external_i.Adresini atanırken auto değişken i blok girilen her zaman farklı olabilir bu yana bir işaretçi, çalışmaz.Değişken a olarak bildirilmiş bir statik değişken ve 2 başlatılamadı.Bu a ile çakışmaması a , main, bu yana statik iç düzeyinde değişkenler yalnızca blok içinde görünür de, bunlar bildirilir.

Değişken a 2 ile 4 vererek sonucu olarak artırılır.other İşlevi adlı yeniden aynı program, başlangıç değeri a 4 olacaktır.İç statik değişkenleri tutmak değerlerine program çıkar ve blok reenters de, bunlar bildirilir.

Ayrıca bkz.

Kavramlar

Depolama sınıfı belirteçleri iç düzey bildiriler için