>> [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.