Mobil Programlama

iOS

DERS PROGRAMI
iOS 201 Ders Programı

extern Bellek Sınıfı

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

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ı.