Doug LLOYD: Başlamadan gibi fonksiyonları ile çalışma, başka bir şey olmaya devam ediyor anlamak için gerçekten önemli, hangi değişken kapsamı kavramdır. Yani kapsamı bir Bir değişkenin özelliği Bu hangi fonksiyonlarından tanımlar bu değişken erişilebilir. C başlıca iki kapsamları vardır, Yerel değişkenler ve global değişkenler. Şimdi yerel değişkenler olabilir sadece fonksiyonlar içinde erişilebilir hangi onlar yarattı ediyoruz. Onlar her tarafından erişilemiyor Programda mevcut fonksiyonu, Sadece fonksiyon hangi oluşturuldu. Küresel değişkenler, Öte yandan, ulaşılabilir Programda herhangi bir fonksiyon tarafından. Ve bunun nedeni onlar içinde oluşturulan değil çünkü herhangi bir fonksiyon. Biz dışında onları bildirmek işlevlerin hepsi her fonksiyonu bilir nerede anlamına gelir o erişmek ve bunu işleyebilirsiniz. Şimdiye kadar ders oldukça ettik çok özel çalışıyor yerel değişkenler ile. Burada bir örnek çok var: Basit ana fonksiyonu ve çok basit biz yazdık ek fonksiyon. Bu durumda, x olduğu Ben sadece yeşil renkli ettik yerellik vurgulamak için veya Bu değişkenin kapsamı, üçlü işlevi yereldir. ana hiç x başvuruda bulunamaz. Bunun ne olduğunu bilmiyor. Başka hiçbir işlevi, aslında, biz ise Buraya ek işlevleri vardı x başvurabilecekler. Benzer şekilde, ben oldum hangi sonuçları mavi renkli, sadece ana kadar yereldir. Sadece ana bilir ne Değişken sonucudur. Üçlü kullanamazsınız. Şimdi de belirtildiği gibi, global değişkenler mevcut. Eğer bu değişken bildirirseniz Herhangi bir fonksiyonun dışında, tüm fonksiyonları Program kendisine başvurabilirsiniz. Yani bu durumda ben de vurguladık global bir değişken bildirimi yeşil. Bu durumda, Değişken varlık beyan yapman lazım, küresel denir bu konuda son derece açık olmak. Bu tip float olduğunu. Ve ben bunu değerini 0,5050 atayın. Siz ana ve fark edeceksiniz Üçlü, küresel başvurmak mümkün. Ve aslında, ben program sayesinde gidersem Ana İlk çağrıları üçlü belirtildiği gibi, 3 ile küresel üçlü çarpma, hangi 1.5-şey onun değerini ayarlar, 1.51 ya da buna benzer bir şey, ve sonra ana da değerini yazdırır küresel. 0.5050 çıktı olmayacak şekilde ana, onu , 1.51 Küresel kez 3 yazdıracaktır. Yani dikkatli olmak lazım küresel değişkenler ile çalışıyoruz. Onlar çok esnek yaparken bilgi aktarmak için güçlü olmak yaklaşık, böylece, her işlevi kullanabilirsiniz, o da bazı olabilir tehlikeli sonuçlar bir fonksiyon değişiklikleri varsa Bir değişkenin değeri Beklediğiniz önce değiştirilmesi. Neden bu ayrım önemli? Neden umursuyorum bazı değişkenler olup olmadığını Yerel ve diğerleri küresel nelerdir? Peki, çoğunlukla, yerel değişkenler C değeri tarafından geçirilen denir ne olduğunu Biz bir işlev çağrısı yaparken. Bu ne anlama gelir? Peki, bir değişken geçtiğinde değeri, Aranan, tarafından hangi fonksiyonu demenin başka bir yoludur bu değişken aldığını girdi olarak geçirilen alır, aslında bu değişken kendisi almaz. Kendi aldığı Bunun kopyası ile çalışmak. Bu gerçekten önemli bir ayrımdır. Sadece bir saniye önce gördüm Global değişkenler o, küresel işlerseniz tek işlevi değişken, etkisi şöyle bir fonksiyon taşır her fonksiyonu sayesinde. Ama yerel değişkenler ile, bu doğru değil. Her fonksiyon ne zaman girdi olarak değişkenleri alır Bu değişkenlerin kopyalarını almak, değil değişkenlerin kendileri. Yani yan etkisi nedir? Bunun anlamı bu değişken olarak Arayan, fonksiyon o işlev çağrısını yapıyor, bir değişmeden bunu geçersiz sürece. Örneğin, bu kod foo hiç değişmez. Int foo 4 eşittir, üçlü çağrı foo, üçlü içinde, Biz o foo olur beklediğiniz 3 ile çarpılır ve iade edilmesi, ama aslında hiçbir etkisi yoktur. Burada olsa, çok ince bir fark. Bu bizim istediğimiz etkisi var. Neden görüyor musunuz? Biz ana bu süre içinde foo geçersiz ediyoruz. Yani int foo 4, foo eşittir üçlü foo, biz bu çağrıyı yaparken, Üçlü kendi kopyasını alır foo, 4 kendi kopyası. Bu ne 4 kez 3 veya iade diyor Değişken zamanlarda 3 iletilir. Ve sonra biz iade atamak Üçlü değeri tekrar foo. Yani bu aslında foo üzerine olacaktır. Bunu yapmanın tek yolu Yerel değişkeni ile bu. Yani şimdi biz başka eklerseniz Burada kod satırı Ana sonuna en , foo değerini yazdırmak aslında 12 üzerinden basacaktır. Değişken kapsamı genellikle Bir sorun çok değil Eğer tüm isim eğer senin değişkenler farklı şeyler. Ama kötü tür alabilirsiniz Aynı değişken adı ise çoklu fonksiyonları görünür, hangi bir sürü olur. Hiç işe yoksa Gerçek dünya nerede Eğer işbirlikçi üzerinde çalışıyoruz Farklı takımlarda programları ve insanlar Aynı yazmak için birlikte çalışıyor program veya programların aynı seti, sık sık değişken yeniden edeceğiz isimler, özellikle yaygın olanları böylece, x, y, i, j, ve benzerlerini içerir. Ama ne zaman değişkenlerin Aynı isim, kapsam sorunları biraz yanıltıcıdır ayrıştırmak için alabilirsiniz. Örneğin, biliyor musunuz ne basılmış olacaktır Bu özel programın sonunda? Bir dakikanızı ayırın. Videoyu duraklatmak ve okumak Bu program sayesinde. Üst biz de görebilirsiniz Bir fonksiyon beyanı var Arttırma adı verilen bir fonksiyon için. Bu işlev, tek bir sürer parametresi, biz x diyoruz bir tamsayı. Ve bu bir tamsayı verir. O başlangıçta dönüş türüdür. Sonra çizgilerin ana, bir çift var Ana kod, hangi son bir Baskı ifadedir. Ve burada bir soru, hatırlıyorum. Ne gerçekte olacak Bu fonksiyonun sonunda basılmış? Ve sonra biz aslında var Aşağıdaki artışı tanımı. Yani içinde adım, bir dakikanızı ayırın Kod, şeyler iz. En basılacaktır biliyor musunuz Bu özel program sonu? Pekala. Umarım, birkaç saniye geçtiniz denemek ve bu bir ayrıştırmak. Hadi beraber yapalım. Yani artış en üzerinde çarpı işareti var Orada üst kısmında beyan. Bu bir oyalama tür oldu. Kendi değişken değil. Kendi kapsamı bulunmamaktadır. Bu sadece bir işlev var beyanname, yani amaçlar için arasında ne olduğunu ayrıştırmak için çalışıyor Bu programda oluyor, Biz de sadece bunu önlemek olabilir. Şimdi bu durumda var, Bu sorunun zor nedeni Biz yerel değişkenler var çünkü Ana ve artım, hem her biri denilen x. Ve tabii ki bu konuda dönüm noktası olduğunu x değişti alır hangi süss çalışıyor ve nasıl değişti yok. Yani her örneği renkli ettik x ana kırmızı yerel olduğunu. Ve ben her örneği renkli ettik x mavi artırmak için yerel var. Üçüncü satırda Bildirimi main, y artış eşittir x Bu artış varlık değil geçmiş ana x veya kırmızı x. Bu bir kopyasını geçirilen alıyorum ediyor. Ve sadece çalışmak için gidiyor Bunun bu kopyası, mavi, x. Eğer matematiksel iseniz eğimli, sen belki Bunun yerine x alt olarak düşündüm artım ana ve alt x i m. Ama aynı fikir. x alt m veya x kırmızı Bir önceki slayt, local-- olan değişkenlerdir daha ziyade, x örneği Ana yerel ve x alt i veya Bir önceki slaytta mavi değişkenler, x örnekleri olduğunu artırmak için yerel. Yani, anlamaya başardık neler sonunda basılan bu fonksiyon? Ben Doug Lloyd değilim ve bu CS50 olduğunu.