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

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

C örnek kodlar

Başlangıç adresi bir işaretçiye atanan belleğe işaretçi kullanarak üç farklı yöntemle erişim sağlama

Aşağıdaki program, malloc() fonksiyonu ile tahsis ettiği 10 adet int değer büyüklüğündeki belleğin başlangıç adresini int bir işaretçiye atar. Tahsis edilen belleğe, üç farklı yöntemle erişim sağlayarak, değerler atar ve ekrana yazar. İlk yöntemde işaretçi aritmetiği ve ikinci yöntemde işaretçi endeksleme yöntemi kullanarak, işaretçinin taşıdığı bellek adresini değiştirmeden işlem yapar. Üçüncü yöntemde ise, işaretçinin taşıdığı bellek adresini artırarak bellek adreslerine erişim sağlar.


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

int main(void)
{
  int *ip = malloc(sizeof(int) * 10);
  int id;

  // 1.yöntem: İşaretçi aritmetiği yöntemi
  for (id=0; id<10; id++) {
       *(ip+id) = 7;
  }

  for (id=0; id<10; id++) {
       printf("Bellek adresi: %p Değer: %d\n", (ip+id), *(ip+id));
  }

  printf("\n");

  // 2.yöntem: İşaretçi endeksleme yöntemi
  for (id=0; id<10; id++) {
       ip[id] = 21;
  }

  for (id=0; id<10; id++) {
       printf("Bellek adresi: %p Değer: %d\n", &ip[id], ip[id]);
  }

  printf("\n");

  // 3.yöntem: İşaretçinin taşıdığı bellek adresini artırma yöntemi
  for (id=0; id<10; id++) {
       *ip = 35;
       printf("Bellek adresi: %p Değer: %d\n", ip, *ip);
       ip++;
  }

  free(ip);

  return 0;
}

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

Bellek adresi: 00dc15c0 Değer: 7
Bellek adresi: 00dc15c4 Değer: 7
Bellek adresi: 00dc15c8 Değer: 7
Bellek adresi: 00dc15cc Değer: 7
Bellek adresi: 00dc15d0 Değer: 7
Bellek adresi: 00dc15d4 Değer: 7
Bellek adresi: 00dc15d8 Değer: 7
Bellek adresi: 00dc15dc Değer: 7
Bellek adresi: 00dc15e0 Değer: 7
Bellek adresi: 00dc15e4 Değer: 7

Bellek adresi: 00dc15c0 Değer: 21
Bellek adresi: 00dc15c4 Değer: 21
Bellek adresi: 00dc15c8 Değer: 21
Bellek adresi: 00dc15cc Değer: 21
Bellek adresi: 00dc15d0 Değer: 21
Bellek adresi: 00dc15d4 Değer: 21
Bellek adresi: 00dc15d8 Değer: 21
Bellek adresi: 00dc15dc Değer: 21
Bellek adresi: 00dc15e0 Değer: 21
Bellek adresi: 00dc15e4 Değer: 21

Bellek adresi: 00dc15c0 Değer: 35
Bellek adresi: 00dc15c4 Değer: 35
Bellek adresi: 00dc15c8 Değer: 35
Bellek adresi: 00dc15cc Değer: 35
Bellek adresi: 00dc15d0 Değer: 35
Bellek adresi: 00dc15d4 Değer: 35
Bellek adresi: 00dc15d8 Değer: 35
Bellek adresi: 00dc15dc Değer: 35
Bellek adresi: 00dc15e0 Değer: 35
Bellek adresi: 00dc15e4 Değer: 35