iOS 101Başlangıç seviyesi derslerde iOS uygulama geliştirme ortamını detaylı olarak inceliyoruz.

Tüm Eğitimleri Aldın mı? Kendini sınamanın tam zamanı

Haydi Sınava Gir

extern Bellek Sınıfı

Kategori : Mobil | Lisans : Creative Commons (by-nc-sa) | En son 12.05.2016 tarihinde güncellendi
Eğitmen : Geleceği Yazanlar Ekibi
Etiketler : obj-c extern bellek

C dilinde, bir fonksiyon gövdesinin dışında tanımlanan bir değişken için öntanımlı bellek sınıfı extern sınıfıdır. Ayrıca extern sınıfına ait olmasını istediğiniz bir değişkeni de mutlaka tüm fonksiyon gövdelerinin dışında tanımlamalısınız.

Extern tipte bir değişken, tanımlanmasından sonra gelen tüm fonksiyonlar tarafından tanınır ve bu fonksiyonlar içinde kullanılır. Extern tipi bir değişkene eş zamanlı olarak birden fazla yerde bildirim yapılmışsa bu değişkene bellekte bir kez yer ayrılır ve bu esnada bir kez ilk değer ataması yapılır. Extern sınıfı bir değişken için bildirimde bulunulmuş fakat ilk değer ataması yapılmamışsa bu durumda ilk değer olarak 0 değeri atanacaktır. Extern sınıfından bir değişkene, bir programın icrası süresince bellekte yer ayrılır.

ÖRNEK:

Aşağıdaki programda a, b, c ve d extern sınıfında tanımlanmış değişkenlerdir.

a ve b değişkenleri; main, top ve carp fonksiyonları için görünürdür yani bu fonksiyonlarca tanınır ve kullanılabilir. c ve d değişkenleri ise, main tarafından tanınamaz çünkü ondan sonra tanımlanmışlardır ancak top ve carp fonksiyonlarınca tanınırlar.

c ve d’ye ilk değer atanmadığı için değerleri, derleyici tarafından 0 olarak atanmıştır.

EXTERN SINIFI İLE İLİŞKİLİ C PROGRAMI:

 

#include "stdlib.h"
int a,b;
#import <Foundation/Foundation.h>

int main(int argc,char *argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool  alloc] init];

    int top(int u,int v);
    int carp(int x,int y);
    int f,t;
    NSLog(@"\na ...");
    scanf("%i",&a);
    NSLog(@"\nb ...");
    scanf("%i",&b);
    t=top(a,b);
    NSLog(@"\nTOPLAM=%i",t);
    f=carp(a,b);
    NSLog(@"\nCARPIM=%i\n\n",f);
    [pool drain];
    return 0;
}

int c,d ;
int top(int u,int v)
{
    NSLog(@"\nc=%i",c);
    NSLog(@"\na=%i",a);
    return u+v;
}

int carp(int x,int y)
{
    NSLog(@"\nd=%i",d);
    NSLog(@"\nb=%i",b);
    return x*y;
}

 

 

PROGRAMIN ÇIKTISI:

 

c ve a değişkenleri, top fonksiyonunca tanındığı için bu fonksiyon içinde yazdırılabiliyor. Aynı şekilde b ve d değişkenleri de carp fonksiyonunca tanındığı için bu fonksiyon içinde yazdırılabiliyorlar c değişkeni, main içinde kullanılsa ya da yazdırılsaydı, bu değişkenin tanımsız olduğu anlamındaki

error C2065: 'c' : undeclared identifier

şeklinde bir hata mesajı alınacaktı.