﻿1
00:00:04,340 --> 00:00:05,570
‫Merhaba ve hoş geldiniz.

2
00:00:05,570 --> 00:00:12,050
‫Bu derste referansları ve işaretçilerin alternatiflerini öğreneceğiz ve neden farklı olduklarını, neden onları

3
00:00:12,050 --> 00:00:14,810
‫kullanmak isteyebileceğimizi göreceğiz.

4
00:00:14,810 --> 00:00:16,370
‫Hadi dalalım ve görelim.

5
00:00:17,220 --> 00:00:23,200
‫İşaretçilerin yanı sıra, referans adı verilen çok benzer bir kavram vardır.

6
00:00:23,220 --> 00:00:28,980
‫Şimdi hem işaretçiler hem de referanslar aslında sadece bir bellek adresidir.

7
00:00:28,980 --> 00:00:37,200
‫Her ikisi de başka bir değişkenin bulunabileceği yere bir referans saklar ve bu şekilde inanılmaz derecede benzerdirler.

8
00:00:37,230 --> 00:00:43,140
‫İkisi arasındaki fark, temelde yeniden tayin edilip edilemeyeceklerine bağlıdır.

9
00:00:43,140 --> 00:00:48,650
‫Temel olarak, ilk oluşturulduktan sonra farklı bir adrese işaret edebilirler mi?

10
00:00:48,660 --> 00:00:51,570
‫Bir işaretçi söz konusu olduğunda, bu cevap evettir.

11
00:00:51,570 --> 00:00:57,660
‫Doğru türe sahip olduğu sürece, bir işaretçiyi istediğiniz zaman yeni bir bellek adresine, yeni bir aktöre, yeni bir bileşene

12
00:00:57,660 --> 00:00:59,910
‫işaret edecek şekilde değiştirebilirsiniz.

13
00:01:00,210 --> 00:01:06,390
‫Öte yandan bir referans, başka bir değişkene işaret etmek için ilk oluşturduğunuzda yalnızca bir kez ayarlanabilir,

14
00:01:06,390 --> 00:01:09,450
‫daha sonra tekrar değiştirilemez.

15
00:01:09,450 --> 00:01:16,260
‫Ve bu bir güvenlik özelliğidir çünkü değişkenleri yeniden işaret etmek, bu değişkenlerin kaybolabileceği

16
00:01:16,260 --> 00:01:21,480
‫veya işaretçiyi null olarak ayarladığınız sorunlara yol açabilir.

17
00:01:21,510 --> 00:01:28,020
‫Null işaretçi aslında hiçbir şeyi işaret etmeyen bir işaretçidir ve hiçbir şeyi işaret etmeyen bir işaretçiyle bir şeyler

18
00:01:28,020 --> 00:01:35,040
‫yapmaya çalışmak aslında motorunuzu çökertebilir, bu da referanslar için ideal bir sonuç değildir çünkü onları ilk oluşturduğunuzda

19
00:01:35,040 --> 00:01:37,410
‫onlara bir değer vermeniz gerekir.

20
00:01:37,560 --> 00:01:41,730
‫Null olamazlar, bu nedenle bu null işaretçi çökmelerini alamazsınız.

21
00:01:41,940 --> 00:01:45,660
‫Şimdi söz konusu sözdiziminin bazılarına göz atmaya başlayalım.

22
00:01:45,660 --> 00:01:50,880
‫Bu nedenle, içeriğe bir işaretçi ile eriştiğinizde, bazı özel sözdizimi kullanmanız gerekir.

23
00:01:50,880 --> 00:01:55,890
‫Referanslarla bellek adresini değil, işaretçideki değeri aldığınızdan emin olmak için bu yıldızı

24
00:01:55,890 --> 00:02:01,200
‫işaretçinin önüne koymanız gerekir, çünkü bellek adresini hiçbir zaman tutmanız gerekmez.

25
00:02:01,200 --> 00:02:06,240
‫Değişkeni, işaret ettiği değişkenmiş gibi kullanabilirsiniz.

26
00:02:06,240 --> 00:02:08,460
‫Özel bir söz dizimi kullanmanız gerekmez.

27
00:02:08,820 --> 00:02:15,390
‫Şimdi adrese erişim var, bu yüzden işaretçilerle adresi otomatik olarak tutarsınız.

28
00:02:15,390 --> 00:02:18,750
‫Değişkeni bir referansla kullandığınızda, özel sözdizimi kullanmanız gerekir.

29
00:02:18,750 --> 00:02:24,480
‫Bunu yapmak için address of operatörünü kullanmanız gerekir ve bu size temelde orijinal değişkenle

30
00:02:24,480 --> 00:02:26,670
‫aynı adresi verecektir.

31
00:02:27,210 --> 00:02:30,720
‫Bir de adresi bir işaretçi ile değiştirmek var.

32
00:02:30,720 --> 00:02:35,850
‫Referanslarla bunu yapmak için adres atayabileceğinizi ve operatörün adresini kullanabileceğinizi gördük.

33
00:02:35,850 --> 00:02:38,070
‫Buna izin verilmez, bu yüzden bunun için bir sözdizimi yoktur.

34
00:02:38,070 --> 00:02:43,860
‫Ve son olarak, ya işaret ettiğimiz değeri, adresi değil de o adreste depolanan gerçek

35
00:02:43,860 --> 00:02:46,200
‫değeri değiştirmek istersek?

36
00:02:46,200 --> 00:02:50,740
‫İşaretçilerle yine bazı özel sözdizimi kullanmanız gerekir.

37
00:02:50,740 --> 00:02:53,280
‫O yıldızı koymalı ve sonra bir şey atamalıyız.

38
00:02:53,280 --> 00:03:00,750
‫Yani aktör işaretçisini yine referanslarla yıldız aktör işaretçisine atarsınız çünkü gerçek adresi değiştiremezsiniz, ekstra

39
00:03:00,750 --> 00:03:03,270
‫bir sözdizimine ihtiyacınız yoktur.

40
00:03:03,270 --> 00:03:07,230
‫Ekstra sözdizimini bırakabilir ve sadece aktör referansının eşit olmasını sağlayabiliriz.

41
00:03:07,230 --> 00:03:12,870
‫Aktör, işaret edilen konumdaki değerin üzerine yazdığınız anlamına gelir.

42
00:03:12,870 --> 00:03:14,280
‫Yani bunların hepsi biraz teorik.

43
00:03:14,280 --> 00:03:16,200
‫Gerçek bir örnek verelim.

44
00:03:16,200 --> 00:03:24,540
‫Dolayısıyla, belki de oyunda bize verilen hasarı depolayan bir float'ımız olsaydı ve mevcut hasarı depoladığımız float

45
00:03:24,540 --> 00:03:26,670
‫sıfıra ayarlanmış olsaydı.

46
00:03:26,670 --> 00:03:28,350
‫Kimse bize zarar vermedi.

47
00:03:28,380 --> 00:03:33,900
‫Şimdi, kopyalamak yerine buna bir referans oluşturmak isteyebiliriz, bunu bir fonksiyona aktarmak

48
00:03:33,900 --> 00:03:36,960
‫isteyebiliriz, ancak aslında değiştirmeden.

49
00:03:36,960 --> 00:03:42,690
‫Bunu yapmanın yolu, bir float değerine sahip olmak ve float değerinden sonra ve işareti koymaktır.

50
00:03:42,690 --> 00:03:45,390
‫Ve ve işareti bunun bir float'a referans olduğunu söyler.

51
00:03:45,390 --> 00:03:49,470
‫Kendisi yeni bir float değildir, herhangi bir float belleği ayırmaz.

52
00:03:49,470 --> 00:03:51,360
‫Sadece bir işaretçi belleği ayırır.

53
00:03:51,510 --> 00:03:56,940
‫Bu yüzden buna hasar ref'i diyebilir ve hasara eşit olarak ayarlayabiliriz.

54
00:03:56,940 --> 00:04:00,360
‫Adresini almamız ya da böyle bir şey yapmamız gerekmiyor.

55
00:04:00,360 --> 00:04:04,530
‫Otomatik olarak bunun bir referans ve bunun da bir değişken olduğunu bilir.

56
00:04:04,530 --> 00:04:08,760
‫Yani burada yapmaya çalıştığınız şey, bu değişkene bir referans oluşturmaktır.

57
00:04:08,760 --> 00:04:15,870
‫Ve elbette, eğer gidip günlüğe kaydedersek, bunu normal bir şamandıra gibi yazdırabiliriz,

58
00:04:15,870 --> 00:04:24,540
‫böylece hasar kolonu ve ardından yüzde F diyebiliriz ve sonra burada sadece hasarı yazdırabiliriz ref.

59
00:04:24,540 --> 00:04:25,860
‫Özel bir sözdizimine ihtiyacımız yok.

60
00:04:25,860 --> 00:04:28,470
‫Bunu normal bir değişken gibi kullanabiliriz.

61
00:04:28,470 --> 00:04:34,020
‫Derledikten sonra play tuşuna basalım, çıktı günlüğümüze bir göz atalım ve yeterince emin olalım,

62
00:04:34,020 --> 00:04:37,680
‫hasar sıfır olarak çıkıyor, bu da ayarladığımız değerdi.

63
00:04:37,680 --> 00:04:42,720
‫Ancak bu, söz konusu orijinal değişkenin bir kopyasını oluşturmadığımı kanıtlamaz.

64
00:04:42,900 --> 00:04:47,040
‫Bu nedenle, değeri değiştirmeyi denemenizi ve ne olacağını görmenizi söyleyelim.

65
00:04:47,040 --> 00:04:54,720
‫Bu nedenle, yeni bir değer ayarlamak için referansı, hasar referansını kullanın ve ardından orijinal

66
00:04:54,720 --> 00:04:59,910
‫değeri referans değerin yanına yazdırın ve bir göz atın.

67
00:04:59,910 --> 00:05:01,770
‫Aynı mıdırlar yoksa farklı mıdırlar?

68
00:05:01,770 --> 00:05:05,190
‫Sadece referansı değiştiriyorsunuz, ama orijinali de değiştiriyor musunuz?

69
00:05:05,190 --> 00:05:08,760
‫Çünkü bu, her ikisinin de aynı değişken olduğu anlamına gelir.

70
00:05:08,790 --> 00:05:10,830
‫Videoyu duraklatın ve deneyin.

71
00:05:13,910 --> 00:05:14,420
‫Tamam.

72
00:05:14,420 --> 00:05:15,130
‫Tekrar hoş geldiniz.

73
00:05:15,140 --> 00:05:16,610
‫O zaman bir deneyelim.

74
00:05:16,640 --> 00:05:22,310
‫Şimdi referansı değiştirmek için, damage ref equals yapacağız.

75
00:05:22,310 --> 00:05:27,650
‫Bu kez beş hasar verdiğimizi söyleyeceğim ve burada herhangi bir özel sözdizimi kullanmak zorunda kalmadığımı fark edeceksiniz.

76
00:05:27,650 --> 00:05:33,140
‫Referansı yeniden işaretlemiyor çünkü onu zaten bildirdik ve oluşturulduğunda referansını

77
00:05:33,140 --> 00:05:34,760
‫ilk satırda ayarladık.

78
00:05:34,760 --> 00:05:36,290
‫Bunu tekrar yapamayız.

79
00:05:36,290 --> 00:05:39,080
‫Şimdi sadece değeri ayarlayabiliriz.

80
00:05:39,410 --> 00:05:46,010
‫Şu anda yapabileceğim şey, hasarı tespit etmek.

81
00:05:46,040 --> 00:05:56,810
‫Aynı dizeye bir hasar ve yüzde f koyalım ve ardından hasarı da buraya aktaralım.

82
00:05:57,560 --> 00:06:00,710
‫Sonra da derleyip bir göz atacağız.

83
00:06:00,740 --> 00:06:08,540
‫Oynat tuşuna basalım, çıktı günlüğümüze gidelim ve yeterince emin olalım, hasar ref ve hasarın her ikisi de beş değerini

84
00:06:08,540 --> 00:06:12,350
‫belirlediğimiz yeni değere sahip olarak yazdırılıyor.

85
00:06:12,350 --> 00:06:18,710
‫Yani özünde, burada aynı bellek parçasına işaret eden iki değişkenimiz var.

86
00:06:18,710 --> 00:06:22,370
‫Neredeyse aynı değişken olduklarını, ancak farklı isimlere sahip olduklarını söyleyebilirsiniz.

87
00:06:22,370 --> 00:06:28,610
‫Yani bu, tıpkı bir işaretçi gibi bir kopyaya ihtiyaç duymama avantajına sahiptir, ancak aynı zamanda kullanımı çok daha kolay

88
00:06:28,610 --> 00:06:30,740
‫olduğu için çok daha fazla faydası vardır.

89
00:06:30,740 --> 00:06:33,680
‫Tüm bu ekstra sözdizimine ihtiyacımız yok ve ayrıca kullanımı daha güvenli.

90
00:06:33,680 --> 00:06:39,320
‫Dolayısıyla, herhangi bir şeyi yeniden işaret etmemiz gerekmediği sürece, referansları kullanmak genellikle tercih edilir.

91
00:06:39,320 --> 00:06:44,840
‫Şimdi burada kullandığımız bazı sembolleri hızlıca gözden geçirelim çünkü biraz kafa karıştırıcı olabilirler.

92
00:06:44,840 --> 00:06:47,240
‫C++'da çok kullanılırlar.

93
00:06:47,240 --> 00:06:52,520
‫Şimdi ve işareti ve yıldız sembollerine bağlam içinde ve ne anlama geldiklerine bir göz atalım.

94
00:06:52,790 --> 00:07:00,020
‫Dolayısıyla, bunları kullandığımızda, yani bunları bir ifadede kullandığımızda, işte bazı kod örnekleri.

95
00:07:00,020 --> 00:07:03,620
‫Yıldızı bir değişkenden önce görebilirsiniz.

96
00:07:03,620 --> 00:07:06,410
‫Bir değişkenden önce ve işaretini görebilirsiniz.

97
00:07:06,410 --> 00:07:07,610
‫Bu ne anlama geliyor?

98
00:07:08,240 --> 00:07:16,190
‫Yıldız sembolünü değişkenden önce koymanın sözdizimi, şimdi ampersand ile aktör işaretçisindeki

99
00:07:16,190 --> 00:07:20,990
‫içeriği alacağımız anlamına gelir.

100
00:07:20,990 --> 00:07:25,940
‫Bir değişkenin önüne veya bir değişkene yapılan referansın önüne ve işareti koyarsanız,

101
00:07:25,940 --> 00:07:28,910
‫bu değişkenin adresini aldığını söyler.

102
00:07:28,910 --> 00:07:32,720
‫Aktörün adresini veya referansın işaret ettiği adresi alıyor.

103
00:07:32,720 --> 00:07:39,440
‫Şimdi bunu bir değişken tipinde kullandığımızı beyan ettiğimizde, yıldızlar ve ve işareti neredeyse

104
00:07:39,440 --> 00:07:41,420
‫zıt anlamlara sahiptir.

105
00:07:41,420 --> 00:07:51,110
‫Yani yıldız, bunun yeni bir aktöre işaretçi olduğu anlamına gelir ve ve işareti de bunun yeni bir aktöre referans olduğu

106
00:07:51,110 --> 00:07:52,550
‫anlamına gelir.

107
00:07:52,550 --> 00:07:57,140
‫Bu nedenle, ister bir ifadede bir değişkenle kullanın, ister bir değişkeni

108
00:07:57,140 --> 00:08:03,500
‫bildiren türde kullanın, tamamen farklı bir anlamlar kümesi olduğunu unutmayın.

109
00:08:03,500 --> 00:08:08,000
‫Şimdi, çok fazla ayrıntıya girmeyeceğim, ancak yaralanmaya hakaret eklemek için, bunların

110
00:08:08,000 --> 00:08:14,240
‫aslında başka bağlamlarda başka anlamları olabilir, ampersand biraz akıllıca anlamına gelebilir ve yıldız, daha önce gördüğümüz

111
00:08:14,240 --> 00:08:17,960
‫gibi, U günlüğündeki dizelerle birlikte kullanılabilir.

112
00:08:17,960 --> 00:08:22,610
‫Bu iki sembolün tüm anlamları bu kadar değildir, ancak işaretçiler ve referanslara

113
00:08:22,610 --> 00:08:26,600
‫atıfta bulunan hemen hemen tüm önemli anlamlar bunlardır.

114
00:08:26,630 --> 00:08:27,320
‫Harika bir şey.

115
00:08:27,320 --> 00:08:32,480
‫Böylece işaretçiler, referanslar, bunların birbirleriyle nasıl ilişkili oldukları, nasıl farklı oldukları ve neden bunları

116
00:08:32,480 --> 00:08:34,490
‫kullanmak isteyebileceğimizi öğrendik.

117
00:08:34,490 --> 00:08:36,140
‫Bir sonraki derste görüşürüz.

