Yığını, alttan (yani, ilk itilmiş) birinci indekse sahip olan alttan büyüyünce düşünebilirsiniz, sonra başka bir öğeye (indeks 2), sonra diğerine (indeks 3), vs. basarsınız. Ayrıca "Normal endeksi" (alttan bir indeksleme) başlayarak yanı sıra, C bir dizinin böyle elemanın mutlak indeksi (olduğunu söyleyebiliriz
+-----------------------+
| element with index 6 | <-- top ("relative" index -1)
+-----------------------+
| element with index 5 | <-- -2
+-----------------------+
| element with index 4 | <-- -3
+-----------------------+
| element with index 3 | <-- -4
+-----------------------+
| element with index 2 | <-- -5
+-----------------------+
| element with index 1 | <-- bottom ("relative" index -6)
+-----------------------+
: Yani bu durum var 1). Bunun yerine negatif dizin yığının üstüne "göreli" dir. lua_gettop
, yığın kümesinin mutlak dizinini verir (her zaman göreceli dizin -1
olan).
Yığınları neden dizinlemenin iki yolu var, o zaman? Bazen bir dizi gibi (mutlak indeksi kullanarak) elemanlara erişmek için yararlıdır ve bazen sadece son itilen öğelere erişmeniz gerekir (böylece üst kısımdan indeksleme).
BTW, genellikle Lua ters yığını görselleştirmek: yukarıda ve aşağı doğru giderek artan başlangıç malzemesi (yani yığın üst zihinsel temsil alt kısmında). Bu zihinsel modeli daha faydalı buluyorum çünkü -1.1 değerini "kodu ( ilk basamağını bulana kadar) kodunda (yukarı doğru) geri çevirdim. Bu şekilde, indeks -2 " ikinci basamağını bulana kadar" geri adım adım olacaktır. Tüm bunlar neyi ittiğimi hızlı bir şekilde belirlememde yardımcı olur.
Ancak karışıklığı önlemek için, burada yığın üst üstündeki gerçekten çekilir daha klasik gösterimini, kullanılan!
lua_gettop() işlevi bir işlevdir, oysa -1 değeri bir tamsayı değişkendir. –
Sence ben aptalım mı? – deepspace
Hayır, yapmam. Sorunuz olsa Stack Overflow için uygun değil. –