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.