Belki. Ben aşağıdan yukarıya çalışıyorum çünkü ben, hemen hemen sadece şimdi için C yazmak. Ben başlamadan önce de (en azından biraz) iyi yazılım mimarisinde tecrübeli olabilir: Ben öyle düşündüm ben üniversiteye gitmeden önce öldürmek için zaman bir grup var. Öğrenmek için üst düzey kavramları daha kolay (bazı durumlarda) yapar, vb soruna yetenek çözmek, ben çok gençken ben PHP ve VB6 öğrendim artırır. Ben bir "dize" tek bir değer olmadığını kavramak için C ve montaj, benim için en zor şey aşağı taşındı, ama ne zaman bir tek değerler dizisi - ve ben sadece birini diğerine karşılaştırmak olamazdı - I vb - her karakter dizisi hareket ve farkı bulmak zorundaydı. Bu gibi küçük şeyler beni yeniden düşünmek ve bilgisayarlar aslında nasıl çalıştı yeniden öğrenmek yaptı. Ben işlemci kayıtları (!? Eğer 32 bit yararlı bir şey koymak nasıl) tamamen yararsız olduğunu düşündüm - Ben dizeleri dışında yaklaşık o şeyi bulmadan önce ben, demek istiyorum.
Söyleniyor, ben bunu kullanmak asla olmasına rağmen, alt düzey programlama öğrenme potansiyel faydaları hakkında gevezelik. Ama benim için, ne olursa olsun nedeni ile gelip - bu genel ilgi çoğunlukla bulunuyor. Ben C eğlenceli olduğunu düşünüyorum, ve daha ben onunla başarmak, daha iyi benim beceri hakkında hissediyorum. Vb bir yığın taşması ne gibi şeyler, hesaplamalı matematik, düşük seviyeli bellek yönetimi (geçersiz veya boş işaretçileri, yığın yolsuzluk ve parçalanma, vb), öğrenme ilgi bir sürü bulabilirsiniz yoksa - o zaman bir garantisi yok ondan 'll really yarar. Ama olabilir.
Eğer mimarisi hakkında bilgi edinmek için C öğrenmek yaparsanız - ve nasıl şeyler aslında works başlık altında - belki ne deneyin. Ben sık sık bilgisayar aslında bunu yapmak için ne sormak nasıl işleyeceğini görmek için montaj kodu aşağı derlemek. Her görev için alınan her adımını görmek için. Aslında, bu char *a = "a string"
ve char a[] = "a string"
arasındaki farkı anladım nasıl. P.: Daha yüksek seviyeli diller gerçekten nasıl ağrısız fark olacaktır Ancak iyi yarar
Kayıt için - her süreç bir çağrı yığını verilir. Bu daha önceden belirlenmiş bir boyutta olan bellek bloğudur. Bu esas olarak, lokal değişkenler için kullanılır. Eğer yerel bir değişken yapmak her zaman, bunun içeriği yığının sonuna eklenir - ve bir işlev (ve bu değişkenler kapsam dışına) zaman, bu veriler tekrar kapalı alınır. Çok şeyler yığının sonuna eklendiğinde bir yığın taşması olur ve taşması önceden ayrılan bellek alanı olduğunu. Bu yığını İRİ nesneler koyarak, ya da çok fazla özyineleme (bir fonksiyon kendisini çağıran) bir sonucu olarak genellikle. Ayrıca ben sadece çok işlevleri kadar karışık olsun eğer yineleme sorunu olarak (bu durumda) temelde aynı olan, işlev çağrılarının içine çağırır sanırım.