SORU
5 Temmuz 2015, Pazar


Neden x[0] != x[0][0]=! x[0][0][0]?

C biraz ders çalışıyorum ve işaretçileri ile mücadele ediyorum. Bildirerek işaretçiler 3 seviye var anladığım kadarıyla:

int *(*x)[5];

*x 5 Element bir dizi için bir işaretçi, böylece intişaretçileri. Ayrıca x[0] = *(x 0);, x[1] = *(x 1)biliyorum Ve bu yüzden....

Yukarıdaki bildirim, neden x[0] != x[0][0] != x[0][0][0] ?

CEVAP
5 Temmuz 2015, Pazar


x int 5 işaretçiler bir dizi için bir işaretçi.
x[0] bir dizidirint 5 işaretçiler.
x[0][0] int bir işaretçi.
x[0][0][0] int.

                       x[0]
   Pointer to array   ------                                  x[0][0][0]         
x -----------------> |      |         Pointer to int            ------- 
               0x500 | 0x100| x[0][0]---------------->   0x100 |  10   |
x is a pointer to    |      |                                   ------- 
an array of 5         ------                         
pointers to int      |      |         Pointer to int                             
               0x504 | 0x222| x[0][1]---------------->   0x222                    
                     |      |                                             
                      ------                                              
                     |      |         Pointer to int                              
               0x508 | 0x001| x[0][2]---------------->   0x001                    
                     |      |                                             
                      ------                                              
                     |      |         Pointer to int                              
               0x50C | 0x123| x[0][3]---------------->   0x123                    
                     |      |                                             
                      ------                                              
                     |      |         Pointer to int                              
               0x510 | 0x000| x[0][4]---------------->   0x000                    
                     |      |                                             
                      ------                                              

Görebilirsiniz

  • x[0] bir dizi ve bir ifade (bazı istisnalar dışında) kullanıldığında, ilk öğe için bir işaretçi dönüştürülür. Bu nedenle x[0] birinci elemanın adresi 0x500 x[0][0] verecektir.
  • x[0][0] 0x100 int bir adres içerir.
  • x[0][0][0] 10 int bir değer içerir.

Yani, x[0] &x[0][0]bu nedenle, &x[0][0] != x[0][0] eşittir.
Dolayısıyla, x[0] != x[0][0] != x[0][0][0].

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dope2111

    dope2111

    29 HAZİRAN 2009
  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009