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