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

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Uzman Üye
Katılım
28 Kas 2015
Mesajlar
255
Tepki puanı
0
Yaş
26
10 HİZMET YILI
[font='Open Sans', Tahoma, Verdana, Arial, sans-serif]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.
[/FONT]


[font='Open Sans', Tahoma, Verdana, Arial, sans-serif]Kod:[/FONT]
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);
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst