Ben yazılım mühendisliği okuyorum bunlar 7 yıl önceki videolar ama okulda hiçbir şey anlamayıp buradan çalışarak o kadar geliştiğimi düşünüyorum ki umarım 10 gün sonra olan c programlama finalim iyi geçer ve gerçekten işe yaradığını gözle görebilirim :)
printf("%d",p); dediğimizde direkt videodaki verdiği 16lık sayı sisteminin 10luk sayı sistemindeki karşılığını veriyor. Hangisi daha kullanışlı tabi onu bilmiyorum
Hocam p=&i olması gerekmez mi? Çünkü "*p" a değişkeninin remde tutulduğu yerin içerisindeki değeri veriyorsa *p=&a yaptığımızda değer değil anın adresini atamış olmuyor muyuz? Bir diğer sorum da -> 13:29 *p=&i dediğimiz halde printf ("%d",*p) yaptığımızda nasıl oluor da i nin adresini değil de değerini vermiş oluyor -> p=**p diyebilir miyiz?
@@StoslaTR burda &i yi bir değişken olarak gör ve *p ile &i nin (i'nin adres bilgisinin bulunduğu değişkenin) içindeki değeri p ye('*' kullanarak)atıyor
Anlatımda sıkıntılar var aslında. int *p=&a; şeklinde bir eşitleme yapınca pointer konusunu yeni öğrenen biri olayı tam anlayamıyor. Başka sıkıntı yaşayan arkadaşlar varsa şu şekilde kafanızda oturtabilirsiniz, asıl mantık bu çünkü: Dereferans operatörünün (* yani) şu seviyede bilmemiz gereken iki adet işlevi var arkadaşlar: 1- Pointer tanımlarken yapının pointer olduğunu programa bildiriyor. 2- Bir adresteki değere erişmek için kullanılıyor. Yani biz int *p; tanımlamasını yaptığımızda bir pointer tanımlamış oluyoruz, evet. Ancak bu tanımladığımız pointer *p değil, sadece p. * sadece yapının pointer olduğunu programa bildiriyor. O yüzden pointer konusunu yeni öğrenen biri için eşitleme işlemi şu şekilde yapılmalı: int *p; --> 'p' pointerını tanımladık. p=&a; --> 'p' pointerına a değişkeninin adresini atadık. printf("%p",p); --> 'p' pointerının tuttuğu adresi yazdırdık. printf("%p",*p); --> 'p' pointerının tuttuğu adresteki değeri yazdırdık. Yani bizim pointerımız *p değil, sadece p. int *p=&i; eşitliği kafa karışıklığına sebep oluyor sadece. Giriş seviyesinde pointer konusunun doğru bir şekilde oturması için eşitlemenin int *p; p=&i; şeklinde yapılması gerek yukarıda da söylediğim gibi. Pointer değişkenimizde * olmadığını kafanıza iyice oturtun ki ileride sıkıntı yaşamayın. Şu şekilde de anlayabilirsiniz: int sayi=5; olsun. printf("%p",&sayi); --> yaparak sayi değişkeninin adresine erişebilirim. printf("%d",*&sayi);--> yaparak da bu adresteki değere, yani sayi değişkeninin kendisine erişebilirim. Çünkü *, bir adresteki değere erişmeye yarıyordu. Kısacası *p diye bir tanımlama yok arkadaşlar. int *p= yaptığımızda da *p'ye bir eşitleme yapmıyoruz çünkü biz *p değil p'yi tanımladık. * sadece yapının pointer olduğunu programa bildiriyor. Mantık bu aslında, yazarak anlatması biraz zor oluyor. Bu olayı kafanızda oturtabilirseniz pointer konusunun %90'ı halloluyor aslında. Sesli şekilde anlatabilsem çok iyi anlarsınız da yazarak bu kadar oluyor maalesef :D
@@muradhajiyev13 tam olarak öyle değil her çalıştığında farklı adreslere ekleniyor değişken olduğu için ilkini hexadesimal olarak bastırdı ikincisini normal bildiğimiz onlu tabanda
@@yunusemre8313 vay 1 yıl geçmiş şimdi universitedeyim evet çözdüm, linked listler var, node lar var, Binary Treeler var, deque var bunlarda elemanlara ulaşmak arraylardaki gibi deil, o yüzden iterator kullanılıyo, bunlarda pointer önemli
Emek budur işte, helal olsun. Hakkınızı ödeyemeyiz, insanların öğrenmesi için bu kadar çabalayana nadir rastlanır. Allah razı olsun.
Müthiş anlatım, gerçekten. Çok net ve anlaşılır. Konu başlı başına insanı etkiliyor, müthiş. Teşekkür ederiz.
5 yıl geçmiş hala faydalanıyoruz. Emeğine teşekkürler kardeşim
Ben yazılım mühendisliği okuyorum bunlar 7 yıl önceki videolar ama okulda hiçbir şey anlamayıp buradan çalışarak o kadar geliştiğimi düşünüyorum ki umarım 10 gün sonra olan c programlama finalim iyi geçer ve gerçekten işe yaradığını gözle görebilirim :)
@@senanur9157 3 hafta geçmiş. Final nasıl geçti bari?
bunlar npc asla sınavdan sonra yanıt vermezler@@by-tech
@@zey3169 herkes npc ise biz neyiz?
@@by-tech yarın sınavım var bakalım bende npc miyim
1 sene icerisinde sadece bu konuyu anlayamadigim icin 4 kez birakip devam ettigim kisma, tekrar hosgeldim 🙃
sonunda anladın mı :') nasıl anladın..
mantığını çok güzel anlattınız beyefendi. ağzınıza sağlık.
Emeğinize sağlık hocam 🎉 başarıcaz 😊
Gerçekten harikulade anlatmışsınız.
Bırakmadınız bi reklam izleyelim araya C programlama diye bısey koymuslar
Süper anlattın kardeşim teşekkürler...iyi bir giriş oldu
printf("%d",p);
dediğimizde direkt videodaki verdiği 16lık sayı sisteminin 10luk sayı sistemindeki karşılığını veriyor. Hangisi daha kullanışlı tabi onu bilmiyorum
Emeğinize sağlık sayenizde çok iyi şekilde anladım konuyu
9:27 Pointer'lar OS mimarisine göre değişse de genellikle 2 değil 1 byte (8 bit) yer kaplarlar bellekte. Düzeltmiş olalım. :))
Gerçekten mükemmel olmuş, emeğinize sağlık
neden u ve p de farklı sayılar çıkıyor neye göre hangisini kullanıcaz
"%u" ile 10`luk sayı sistem ile "%p" ile ise 16`lık hex sistemi ile yazıyor
Hocam mükemmelsiniz...
Emeğinize sağlık, çok güzel bir seri olmuş. Bu arada printf("%p",&i); ile de i'nin adresini basabiliyormuşuz. :D:D:D
Hocam ne güzel anlatmışsınız..
Daha önce assambly dili kullandıysanız, dolaylı ve direct adresleme ile aslında aynı şey gibi
7 yıl sonra bile izlemeye dewammmm
güzel anlatım teşekkürler
mekatronik mühendisliğindeki arkadaşlarıma selam olsun.. biliyorum hepiniz buradasınız :)
@YazılımBilimi tüm videolar için teşekkürler, emeğine sağlık.
aleykum selam aslanım
Bir şeyi anlayamadım :
Şidmi p=400 ;
&i=400;
o zaman
p=&i olması gerekmez mi ? ve *p=i olması gerekmez mi ?
Helal olsun abi mükemmel anlatmışsın mantığını
Hocam p=&i olması gerekmez mi?
Çünkü "*p" a değişkeninin remde tutulduğu yerin içerisindeki değeri veriyorsa *p=&a yaptığımızda değer değil anın adresini atamış olmuyor muyuz?
Bir diğer sorum da
-> 13:29 *p=&i dediğimiz halde printf ("%d",*p) yaptığımızda nasıl oluor da i nin adresini değil de değerini vermiş oluyor
-> p=**p diyebilir miyiz?
bende onu anlamadım
@@StoslaTR burda &i yi bir değişken olarak gör ve *p ile &i nin (i'nin adres bilgisinin bulunduğu değişkenin) içindeki değeri p ye('*' kullanarak)atıyor
Anlatımda sıkıntılar var aslında.
int *p=&a; şeklinde bir eşitleme yapınca pointer konusunu yeni öğrenen biri olayı tam anlayamıyor. Başka sıkıntı yaşayan arkadaşlar varsa şu şekilde kafanızda oturtabilirsiniz, asıl mantık bu çünkü:
Dereferans operatörünün (* yani) şu seviyede bilmemiz gereken iki adet işlevi var arkadaşlar:
1- Pointer tanımlarken yapının pointer olduğunu programa bildiriyor.
2- Bir adresteki değere erişmek için kullanılıyor.
Yani biz int *p; tanımlamasını yaptığımızda bir pointer tanımlamış oluyoruz, evet. Ancak bu tanımladığımız pointer *p değil, sadece p. * sadece yapının pointer olduğunu programa bildiriyor. O yüzden pointer konusunu yeni öğrenen biri için eşitleme işlemi şu şekilde yapılmalı:
int *p; --> 'p' pointerını tanımladık.
p=&a; --> 'p' pointerına a değişkeninin adresini atadık.
printf("%p",p); --> 'p' pointerının tuttuğu adresi yazdırdık.
printf("%p",*p); --> 'p' pointerının tuttuğu adresteki değeri yazdırdık.
Yani bizim pointerımız *p değil, sadece p. int *p=&i; eşitliği kafa karışıklığına sebep oluyor sadece. Giriş seviyesinde pointer konusunun doğru bir şekilde oturması için eşitlemenin
int *p;
p=&i; şeklinde yapılması gerek yukarıda da söylediğim gibi.
Pointer değişkenimizde * olmadığını kafanıza iyice oturtun ki ileride sıkıntı yaşamayın. Şu şekilde de anlayabilirsiniz:
int sayi=5; olsun.
printf("%p",&sayi); --> yaparak sayi değişkeninin adresine erişebilirim.
printf("%d",*&sayi);--> yaparak da bu adresteki değere, yani sayi değişkeninin kendisine erişebilirim.
Çünkü *, bir adresteki değere erişmeye yarıyordu.
Kısacası *p diye bir tanımlama yok arkadaşlar. int *p= yaptığımızda da *p'ye bir eşitleme yapmıyoruz çünkü biz *p değil p'yi tanımladık. * sadece yapının pointer olduğunu programa bildiriyor.
Mantık bu aslında, yazarak anlatması biraz zor oluyor. Bu olayı kafanızda oturtabilirseniz pointer konusunun %90'ı halloluyor aslında. Sesli şekilde anlatabilsem çok iyi anlarsınız da yazarak bu kadar oluyor maalesef :D
@@kriptoferit8364 varya çok iyi geldi tüm kafa karışıklılığımı giderdin teşekkür ederim.
@@kriptoferit8364 Mükemmelsin. Daha iyi kanal önerin var mi dostum?
hocam videonun ilk kısmında sıkıntı yaşadığınız için excel önerebilirim daha kolay olucaktır
çok açıklayıcı olmuş,teşekkürler.
hocam * işareti değeri verir dedik ama adresi değerini aldı 11:26 saniyede 7. satırda adresin değeri aldı?Anlamadım o noktayı
*p gösterimi p değişkeninin pointer olduğunu göstermek içindi. eşitliğin yanındaki & ile p pointer'ına adresi atadı.
Fahrettin Burak Demir eyvallah baskan
abi sen direk kutucuk adresini 8000 diye yazdın ama bizim hocamız A105 gibimsi şeyler yazıyor herhalde 16 lık sistemde yazıyor
Abi heryerde nasıl çıkıyor ben mantığını anladım ama neden bu yapılır anlamadım ne işe yarar
Abi sol taraftaki 1 2 3 4 5 ... bende çıkmıyor ve de senin yazdığın kodların aynısını yazıyorum çalışmıyor ? bana açıklayabilir misin?
Dev C++ ın sürümüne dikkat et, bende benzer bir problem yaşadım, 4.92 sürümü yüklüymüş
o kutucuklar d tipi flip flop devresidir
%p ve %u yazdığınızda neden farklı sonuçlar üretti ?
Sayı sistemleri ile ilgili birşey olmalı, yanılmıyorsam %p 16lık yani hexadecimal, %u ise 10luk yani decimal sayı sisteminde bastırıyor değeri.
@@muradhajiyev13 tam olarak öyle değil her çalıştığında farklı adreslere ekleniyor değişken olduğu için ilkini hexadesimal olarak bastırdı ikincisini normal bildiğimiz onlu tabanda
Hocam devc++ yükleyemiyırum alternatifi nedir
visual studio tercih edebilirsin
çok güzel teşekkür ederiz.
scanf yazarken & kullanmak zorunlu değil mi yani her scanf'te olmalı değil mi
%s alıyorsan yazmıyorsun
pointera başta eşitlenen değişkenin değeri sonradan değişse de pointerın adresi değişkenin ilk değerindeki adresi olarak mı kalıyor?
Adres aynı kalır sadece değişkenin içindeki değer değişir.
Elinize sağlık
fonksiyonlar yamultmuştu bu iyi geldi :D
Fonksiyonları bitirdikten sonra 3 gün ara verdim dostum ben de :D
Are you sure about that
çok teşekkürler
muhteşem
her bilgisayarda farkli cikiyor olmasi normal mi?
Evet normal.
Bende hocadan farklı bir sonuç çıktı
Teşekkürler.
Abi, efsanesin ya
%u ne içinkullanılıyor acaba?
onluk sayı sistemi ile basıyor değeri. p 16lık değerini basıyor ekrana
❤
Hocanın paintle imtihanı oynat bakalım .d
thanks a lot
hocam çok güzel anlatıyorsunuz fakat o bayt değil bit olması gerek miyormu Ayrıca dev c++ herhangi bir tuşa basılıp basılmadını nerden anlarız(nasıl)
evet bit olması gerekiyor çünkü flip floplar bir bitlik veri saklayabilirler...
kralım
bu sayı dizisi 16 lık sayı sisteminin sayı dizisi
404=4004 ♥
bende de 2358852 i gösterdi tesadüf olamaz heralde 11:00
+Berkay Yıldız tamamen tesadüf, aşk tesadüfleri sever :D
+Berkay Yıldız Bende de aynı sayıyı verdi neden öyle oldu başka bir şeyi mi gösteriyor acaba :S
valla bilmiyom ilginç bi tesadüf ama bnce tesadüf olamaz gibi geldi
+Berkay Yıldız Tesadüf değil zaten ihtimal yok c galiba ilk girdiğin sayıyı hep o adresi veriyor olabilir.
2 kadir yorum yapmış hangi kadire inanaıyım hangi kadir inanır :D
hiç bi şey anlamadım
pointer :D 😀😀😀
reis
Mantığını anlatdın da ne işimize yaradığını anlatmadın hocam
Kanka bende oyle genel olarak nerede kullandigimizi çözdün mu
@@yunusemre8313 vay 1 yıl geçmiş şimdi universitedeyim evet çözdüm, linked listler var, node lar var, Binary Treeler var, deque var bunlarda elemanlara ulaşmak arraylardaki gibi deil, o yüzden iterator kullanılıyo, bunlarda pointer önemli