[MÜZİK OYUN] Doug LLOYD: Pekala, atalım komut satırı bağımsız değişkenleri hakkında konuşmak. Yani, şimdiye kadar ders oldukça programların hemen bütün Muhtemelen başladı bu-- int main boşlukta gibi. Biz topluyordum Kullanıcı girişi biz bunu gerekirse gibi bizim programlarda Mario programı, örneğin, in-bir program istekleri ile. Biz değiştirmek için gerekli değil Ana beyanı, Çünkü yerine ana biz içinde Sadece int almak için çağırabilir, söylüyorlar. Ne kadar büyük sen piramit olmak istiyorsun? Ya da almak için çağırabilir Ne kadar değişim float-- kullanıcıya I çıkış gerekir? Başka bir yol olsa var ve bizim kullanıcılara istiyorsanız temin edebilmek için Bizim program veri yerine while zamanında Program, çalışan ince bir ayrım değil Bazen çok faydalı bir, ana ilan yeni bir form gerekir. Biz isterseniz int main boşluğu kullanamazsınız Komut satırı diğer verileri toplamak kullanıcı programını çalıştırıldığında, dolayısıyla komut satırı argümanları. Bu komut satırı toplamak için kullanıcı argümanlar, senin beyanı değiştirmek bu-- int gibi bakmak için ana Ana, açık parantez, int argc, virgül, Dize argv, köşeli parantez, ve daha sonra küme ayracı açın. Yani zaten ne anlama geliyor? Peki, biz iki parametre geçiyoruz, Ana veya argümanlar veya girdiler. Bir, bir tamsayıdır adı argc ve diğer ne nedir? Bu doğru, dizelerden oluşan bir dizi var? Biz köşeli ayraç gösterimini bakın. Bu dizelerin bir dizi var. Bu bireysel bir dize değil, bu dizeleri bir dizi var. Ve bu iki argüman, argc ve argv, ne veri kullanıcıyı bilmek sağlayacak Komut satırında sağlamıştır ve ne kadar çok şey onlar Komut satırında sağladı. Çalışmak için oldukça yararlı şeyler. Argc, argüman sayısı açılımı ve bu arada, bilmeli, Eğer argc diyebiliriz Bunu istersen. Sen ne olursa olsun istedik argv çağırabilirsiniz. Bunlar sadece geleneksel isimler Biz them-- argümanı sayımı için kullandıkları, ve biz ikinci göreceğimiz gibi, argüman vektörü, argv. Ama onları aramak zorunda değilsiniz Eğer istemiyorsanız eğer argc ve argv, ama geleneksel, biz ne olduğunu. Neyse, argc, argüman sayısı. Bu bir tamsayı türü değişken olduğunu ve bu yüzden gibi iki şey varsa, beklediğinizden Biz bulma için gidiyoruz Bu yazıldığında ne ve ne kadar malzeme Kullanıcı yazdınız, argc ise Ne kadar bize söyleyecek Yazılan kullanıcı şeyler. Size bir numara verir Yani Komut satırı argümanları kullanıcı Program çalıştırıldığında yazdınız. Program ise Yani nokta açgözlü slash koşmak, ve açgözlü içinde ana işlevi programlamak beyan int main int argc vardır, Dize sonra, köşeli parantez argv bu durumda argc biridir. Şimdi biz değil fark ne çok şey saymak Kullanıcı program adından sonra yazdınız. Program adı kendisi sayar Bir komut satırı argümanı olarak. Yani içinde, açgözlü slash dot Bu durumda, argc biridir. Kullanıcı çizgi açgözlü 1024 CS50 yazdıysanız Bu durumda argc Komut satırı, at üç olurdu. Ve biz yol çünkü bu biliyorum Bu dizeleri arasında bölünme olup olmadığı tespit edilir Bir boşluk veya sekme var, veya aralarında böyle bir şey. Böylece boşluk herhangi bir miktarda, sözde değerleri arasındaki komut satırı yazdığınız Orada kaç olduğunu gösterir. Yani açgözlü Space 1024 boşluk çizgi nokta CS50, argc, bu durumda, üçtür. Argv argümanı vektörüdür. Vector, bu arada, sadece bir Bir dizi için başka bir kelime, ve bu bir dizidir Bu dizeleri saklar. Bir elemanın başına bir dize, dizeleri bu kullanıcı aslında Komut satırında yazdığınız Program çalıştırıldığında. Şimdi, durum Herhangi bir dizi ile, eğer Bizim tartışmalardan çağırmak diziler, argv ilk elemanı Her zaman bulunabilir olacak argv köşeli ayraç sıfır. Bu ilk endeks bulunuyor argv dizinin. Böylece will-- ve aslında, o irade Her zaman programın adı olabilir, Her zaman yer alacak argv köşeli ayraç sıfır. Argv son öğe her zaman bulunur argv köşeli parantezler argc eksi biri. Neden görüyor musunuz? Kaç unsurları hatırla Bu dizide var. Peki, biz bu kadar ki- biliyorum elemanların argc sayısı. Kullanıcı üç şey yazdıysanız Komut satırı, argc üçtür. Ama nedeniyle c, ne zaman biz çalışıyoruz diziler, dizinin her elemanı, veya daha doğrusu endeksleri Dizi, sıfırdan başlar. Biz üç unsuru varsa bizim Dizi, biz, argv sıfır bir öğe var argv bir bir element, argv iki at ve bir element. Argv hiçbir unsur yoktur Üç ve boyut üç dizisi. Yani bu yüzden son var argv unsuru her zaman can argv meydanında bulunan parantez argc eksi bir. Yani kullanıcı çalıştırılır, varsayalım follows-- açgözlü programı Onlar komut satırı nokta olarak yazarsanız açgözlü alan 1024 uzay CS50 çizgi ve sebebi ne olursa olsun biz ettik Zaten bizim açgözlü bir program hazırladı biliyorum ve bu çalışmayı Komut satırı argümanları. Biz çalışırken biz daha önce vermedi açgözlü sorun için üzerine, ama en şimdi modifiye ettik diyelim o yüzden işlemi yapmak bir şekilde komut satırı argümanları. Bu durumda, sıfır argv nokta çizgi açgözlü olduğunu. Argv biri nedir? Peki, bu doğru, 1024 değil mi? 1024, ama burada var Gerçekten önemli distinction-- Eğer argv veri türünü hatırlıyor musun? Bu doğru, dizeleri saklar? Ama 1024 gibi görünüyor bir tamsayı değeridir. Bu gerçekten önemli ayrım ve aslında bir şey olmaya devam size Daha sonra sorunlara karşılaşabilirsiniz. Argv her şeydir bir dize olarak depolanan. Yani argv kişinin içerikleri Dize bir, sıfır, iki, dört, Bu dört karakterden oluşan. Bu kullanıcı yazdığınız gibi değil bir, sıfır, iki, dört Bireysel harfler veya karakterler. Bu, tam sayı 1024 değildir ve böylece doğrudan olamaz int 1,000 diyerek onunla çalışmak, ya da yerine int x argv bir eksi 24 eşittir. Sezgisel, bu düşünebilirsiniz Tamam, iyi o 1024 eksi 24 var gibi Böylece x 1.000 eşittir. Ama aslında, bu, böyle değil argv biri bir dizedir çünkü. Dize 1024. Şimdi olabilen bir işlevi yoktur tamsayılar dizeleri dönüştürmek için kullandı. Senin için yağma olmaz şimdi, ama ben Zamyla eminim bunun hakkında size mutlu olacak gelecekte bir sorun için örneklerde. Ama aynı zamanda bulabilirsiniz Problemleri da-- bahane Bana, fonksiyonlar o olur referans 50 bunu yapmak, Eğer başvuru kılavuzuna giderseniz Eğer bir işlev bulabilirsiniz Sizin için bu dönüşümü yapacak. Fakat yine de, örneklerde gelecekte bir sorun için, Zamyla için mutlu olacak hangi işlevi size o dönüştürmek olacaktır tamsayı 1024 dize 1024. Pekala, hareketli. Biz, bizim argv sıfır kapalı ettik biz bir argv kapalı ettik. Ne argv iki var? CS50. Bu bir muhtemelen güzel kendini açıklayıcı. Ne argv üç var? Peki daha, biz gerçekten bilmiyorum, tamam mı? Biz, büyüklüğü üç bir dizi var Bu kaç unsurlar kullanıcı var Komut satırında yazdığınız, bu yüzden biz üç argv giderseniz, Şimdi overstepping ediyoruz Bizim dizinin sınırları. Derleyici, bize bunu sağlayacak Hiçbir sezgisel bir sorun onunla var, ama aslında açısından ne oluyor gerçekleşmesi için, biz gerçekten bilmiyoruz. Bu ne bağlıdır bellekte nerede bulunur argv üç olması beklenir. Ve böylece biz bitebileceğini uzakta sağ salim serbest alıyorum. Daha büyük olasılıkla değil, daha özellikle aksine olarak argv ile çalışıyoruz başka bir diziye Bu, bizim programda var biz muhtemelen acı gidiyoruz Bir segmentasyon hatası. Yani yine, sınırları aşmak emin olmamak senin dizilerin, özellikle argv, onun yüksek derecede verilen programlarınızda önemi. Ben Doug Lloyd değilim. Bu CS50 olduğunu.