Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Skaler türleri başlatırken değeri assignment-expression değişkenine atanır. Atama için dönüştürme kuralları geçerlidir. (Dönüştürme kuralları hakkında bilgi için bkz . Tür Dönüştürmeleri .)
Sözdizimi
declaration:
declaration-specifiers
init-declarator-list
Tercih;
declaration-specifiers:
storage-class-specifier
declaration-specifiers
Tercih
type-specifier
declaration-specifiers
Tercih
type-qualifier
declaration-specifiers
Tercih
init-declarator-list:
init-declarator
init-declarator-list
,
init-declarator
init-declarator:
declarator
declarator
=
initializer /* Skaler başlatma */ için
initializer:
assignment-expression
Aşağıdaki kurallara uyduğun sürece herhangi bir türdeki değişkenleri başlatabilirsiniz:
Dosya kapsamı düzeyinde bildirilen değişkenler başlatılabilir. Bir değişkeni dış düzeyde açıkça başlatmazsanız, varsayılan olarak 0 olarak başlatılır.
ile bildirilen
staticstorage-class-specifierherhangi bir genel değişkeni başlatmak için bir sabit ifade kullanılabilir. Program yürütme başladığında, olduğustaticbildirilen değişkenler başlatılır. Bir genelstaticdeğişkeni açıkça başlatmazsanız, varsayılan olarak 0 olarak başlatılır ve işaretçi türüne sahip her üyeye null işaretçi atanır.veya
registerdepolama sınıfı tanımlayıcısıautoile bildirilen değişkenler, yürütme denetimi bildirildiği bloğa her geçtiğinde başlatılır. Bir başlatıcıyı veyaregisterdeğişkenininautobildiriminden atlarsanız, değişkenin ilk değeri tanımlanmamış olur. Otomatik ve kayıt değerleri için başlatıcı sabit olmakla sınırlı değildir; daha önce tanımlanmış değerleri, hatta işlev çağrılarını içeren herhangi bir ifade olabilir.Dış değişken bildirimlerinin ve
staticdış veya iç tüm değişkenlerin ilk değerleri sabit ifadeler olmalıdır. Daha fazla bilgi için bkz. Sabit İfadeler. Dış olarak bildirilen veya statik değişkenlerin adresi sabit olduğundan, dahili olarak bildirilenstaticbir işaretçi değişkenini başlatmak için kullanılabilir. Ancak, bloğunautoher yürütmesi için farklı olabileceğinden bir değişkenin adresi statik başlatıcı olarak kullanılamaz. veregisterdeğişkenlerini başlatmakautoiçin sabit veya değişken değerleri kullanabilirsiniz.Bir tanımlayıcı bildiriminin blok kapsamı varsa ve tanımlayıcı dış bağlantısı varsa, bildirimin başlatması olamaz.
Örnekler
Aşağıdaki örneklerde başlatmalar gösterilmektedir:
int x = 10;
Tamsayı değişkeni x sabit ifadesine 10başlatılır.
register int *px = 0;
İşaretçi px 0 olarak başlatılır ve bir "null" işaretçisi oluşturulur.
const int c = (3 * 1024);
Bu örnekte, anahtar sözcük nedeniyle const değiştirilemedi sabit bir değere başlatmak c için bir sabit ifade (3 * 1024) kullanılır.
int *b = &x;
Bu deyim, işaretçiyi b başka bir değişkenin adresiyle başlatır. x
int *const a = &z;
İşaretçi a adlı zdeğişkenin adresiyle başlatılır. Ancak, olarak belirtildiğinden constdeğişkeni a yalnızca başlatılabilir, hiçbir zaman değiştirilemez. Her zaman aynı konuma işaret eder.
int GLOBAL ;
int function( void )
{
int LOCAL ;
static int *lp = &LOCAL; /* Illegal initialization */
static int *gp = &GLOBAL; /* Legal initialization */
register int *rp = &LOCAL; /* Legal initialization */
}
Genel değişken GLOBAL dış düzeyde bildirildiğinden genel kullanım ömrüne sahiptir. Yerel değişkenin LOCAL depolama sınıfı vardır auto ve yalnızca bildirildiği işlevin yürütülmesi sırasında bir adresi vardır. Bu nedenle, işaretçi değişkenini staticlp adresiyle LOCAL başlatma girişimine izin verilmez. İşaretçi static değişkeni gp , adresi GLOBAL her zaman aynı olduğundan adresine başlatılabilir. Benzer şekilde, *rp yerel bir değişken olduğundan ve sabit olmayan bir başlatıcıya sahip olabileceği için rp başlatılabilir. Blok her girildiğinde yeni LOCAL bir adrese sahip olur ve bu adrese rpatanır.