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
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 dizilert
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.
JavaScript kilitler nasıl çalışır?...
CSS üçgenler nasıl çalışır?...
Veri bağlama Nasıl çalışır?AngularJS :...
Nasıl veritabanı indeksleme çalışır?...
Bit shift (bit-shift) operatörleri ned...