Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C örnek kodlar > c_ornek00053

C örnek kodlar

İşaretçi kullanmadan önce, üç farklı yöntemle işaretçiye bellek adresi atama

Aşağıdaki program, int veri türünden üç adet işaretçi, bir değişken ve bir dizi bildirimi yapar. 10 adet int değeri ilk değer atama yöntemi ile diziye atar.

id1 değişkeninin bellek adresini ip1 işaretçisine ve idizi dizisinin bellek adresini ip2 işaretçisine atar. 10 int değer büyüklüğündeki belleğin başlangıç adresini ise ip3 işaretçisine atar. Böylece, her üç işaretçi de kullanılabilir hale gelmiş olur.

İşaretçiler bildirimi yapıldıktan sonra, mutlaka bir bellek adresi atanarak kullanıma hazır hale getirilmelidir.

idizi elemanlarının bellek adresleri ile değerlerini işaretçi endeksleme yöntemi ile ekrana yazdırır. Tahsis edilen belleğe ip3 işaretçisi yoluyla, işaretçi endeksleme yöntemi kullanarak, değer atar ve bellek adresleri ile değerleri ekrana yazar.


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int *ip1, *ip2;
  int *ip3 = malloc(sizeof(int) * 10);
  int id1;
  int idizi[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

  ip1 = &id1;  // int değişken bellek adresini işaretçiye atama
  ip2 = idizi; // int dizi başlangıç bellek adresini işaretçiye atama

  // int dizi değerlerini işaretçi endeksleme yöntemi ile ekrana yazdırma
  for (id1=0; id1<10; id1++) {
       printf("Bellek adresi: %p Değer: %d\n", &ip2[id1], ip2[id1]);
  }

  printf("\n");

  // İşaretçi endeksleme yöntemi ile tahsis edilen belleğe değer atama
  for (id1=0; *ip1<10; (*ip1)++) {
       ip3[*ip1] = 7;
       printf("Bellek adresi: %p Değer: %d\n", &ip3[*ip1], ip3[*ip1]);
  }

  free(ip3);

  return 0;
}

Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:

Bellek adresi: 0061fec8 Değer: 1
Bellek adresi: 0061fecc Değer: 2
Bellek adresi: 0061fed0 Değer: 3
Bellek adresi: 0061fed4 Değer: 4
Bellek adresi: 0061fed8 Değer: 5
Bellek adresi: 0061fedc Değer: 6
Bellek adresi: 0061fee0 Değer: 7
Bellek adresi: 0061fee4 Değer: 8
Bellek adresi: 0061fee8 Değer: 9
Bellek adresi: 0061feec Değer: 10

Bellek adresi: 00d215c0 Değer: 7
Bellek adresi: 00d215c4 Değer: 7
Bellek adresi: 00d215c8 Değer: 7
Bellek adresi: 00d215cc Değer: 7
Bellek adresi: 00d215d0 Değer: 7
Bellek adresi: 00d215d4 Değer: 7
Bellek adresi: 00d215d8 Değer: 7
Bellek adresi: 00d215dc Değer: 7
Bellek adresi: 00d215e0 Değer: 7
Bellek adresi: 00d215e4 Değer: 7