SORU
22 Mayıs 2009, Cuma


Nasıl işaretçiler işaretçi C çalışır?

Nasıl işaretçiler işaretçiler C çalışır? Ne zaman onları kullanmak istiyorsunuz?

CEVAP
22 Mayıs 2009, Cuma


Hadi 8 bitlik Adres 8 bitlik bir bilgisayar (ve böylece bellek sadece 256 bayt) varsayalım. Bu bellek (üstündeki numaraları adresleri) bir parçasıdır

  54   55   56   57   58   59   60   61   62   63   64   65   66   67   68   69
 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
|    | 58 |    |    | 63 |    | 55 |    |    | h  | e  | l  | l  | o  | \0 |    |
 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 

Burada gördüğünüz, Adres 63 dize "Merhaba" ile başlar. Eğer bu "Merhaba" hafıza sonra . tek olay ise, bu durumda,

const char *c = "hello";

... c işaretçi (salt okunur) bir dize olarak tanımlar "" ve böylece değeri 63 içerir. Merhaba Bir yerlerde saklı olmalı kendisi c: Bu örnek, konum 58 yukarıda. Tabii ki sadece diğer göstericiler için karakter, ama aynı zamanda işaret edebilir. E. g.:

const char **cp = &c;

Şimdi cp puan c, adresini içerir c 58). Hatta daha da ileri gidebiliriz. Düşünün:

const char ***cpp = &cp;

Şimdi cpp mağazalar cp adresi. 55 değer (yukarıdaki örneğe göre) bu yüzden, evet, doğru tahmin ettiniz: 60 adresi de kendisi saklı.


Gibinedenişaretçiler işaretçiler kullanır:

  • Bir dizi adı genellikle ilk elemanın adresini verir. Eğer öyleyse dizinin türü unsurları içeriyorsa t dizi için bir referans 16* *türü vardır. Şimdi tür diziler t bir dizi düşünün: bu 2D dizi için bir referans olacak türü doğal olarak 18* = t ***, ve bu nedenle bir işaretçi bir işaretçi.
  • Dizeleri bir dizi tek boyutlu geliyor olsa da, dizeleri karakter dizileri olduğundan aslında iki boyutlu. Dolayısıyla: char **.
  • f türünde bir değişken değiştirmek için ise 22 ** türünde bir bağımsız değişken olarak kabul etmek gerekir bir işlevi 23**.
  • Burada istatistiksel olarak birçok diğer nedenler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011