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 int
iş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 nedenlex[0]
birinci elemanın adresi0x500
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ş:
Neden bu iki kez (1927) garip bir sonu...
Neden HTML düşün” renk? “chucknorris m...
Neden Google while(1); JSON yanıtların...
Neden char[] şifreler için Dize Java t...
Neden baskı "B" baskı " ...