C / Adres Aritmetiği Anlatımı Ve Kodu


Visual Basic ve .NET Framework    Visual Basic ve .NET Framework İle İlgili Paylaşım Kategorisi

Yazar: AlpBenjamins    0 Yorum    151 Görüntüleme
  • 0 Oy - 0 Yüzde

Paylaşım Tarihi: 01.02.2016, 12:16:30 #1
AlpBenjamins Cezalı Üye
Cezalı Üye
Status: Çevrimdışı Yorum Sayısı:270 Konu Sayısı:118 Üyelik Tarihi:28.11.2015

Adres Aritmetiği
p bir işaretçi ise p++ aynı türdeki bir sonraki değere işaret eder. p+=i ise
p’nin değerini i kadar arttırarak i sıra sonraki değere işaret eder. Bu ve
buna benzer işlemler en basit işaretçi aritmetiğini anlatır.
54/17.10.2007 01:35:00 PM 69
C Programlama Ders Notları
C dilinin işaretçi, dizi ve işaretçi aritmetiği ile ilgili entegrasyonu ve
bütünlüğü dilin çok güçlü olmasını sağlamıştır. Şimdi bellekten yer ayıran
ve bu yeri geri serbest bırakabilen program satırlarını inceleyeceğiz.
Programda malloc(n) ve free(p) şeklindeki fonksiyonlar kullanılmıştır. Bu
fonksiyonlardan malloc(n) n byte’lık bir alan ayırır ve bu alana bir işaret.i
değer döndürürken free(p) p ile işaret edilen alanın bellekte serbest
bırakılmasını sağlar. Bu işlemlerin sıra bakımından ters olarak yapılması
gerektiği açıktır. Yani bir bellek sahası önce malloc ile ayrılmış olmalıdır ki
free ile serbest bırakılabilsin. Bu şekilde özellikle istenilen zamanlarda
istenilen kadar bellek ayrılabilir ve dizi ya da ona benzer kullanımlar statik
olmaktan çıkar ve dinamik kullanıma geçerler.bu uygulamalarda boş bellek
sahaları heap-yığın dediğimiz yerden kullanılırlar.
Örnek 21
Bu örnek malloc kullanarak heap denilen sahadan bellek tahsis eder ve bu
belleği kullandıktan sonra geri serbest bırakır.


Kod:
Kod:
#include <stdio.h>
int p;
main(){
p=(int *) malloc(sizeof(int)*20);
// 20 elemanlı bir int dizisi tanımlamakla eşdeğer
if (p==NULL){
printf(“Yeterli Bellek Yok\n”);
return;
}
for(k=0;k<20;k++) scanf(“%d”,p+k);
for(k=0;k<20;k++) printf(“%d\n”,*(p+k));
free(p);







Aradığınızı Bulamadınız Mı ?

Konuyu görüntüleyenler:
1 Misafir