#include <stdio.h> #include <stdlib.h> int main() { int n, i, *ptr, sum = 0; printf("Eleman sayısını girin: "); scanf("%d", &n); ptr = (int*) malloc(n * sizeof(int)); // Bellek tahsis edilemezse if(ptr == NULL) { printf("Hata! Bellek tahsis edilemedi."); exit(0); } printf("Elemanları girin: "); for(i = 0; i < n; ++i) { scanf("%d", ptr + i); sum += *(ptr + i); } printf("Toplam = %d", sum); // Belleği serbest bırakma free(ptr); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int n, i, *ptr, sum = 0; printf("Eleman sayısını girin: "); scanf("%d", &n); ptr = (int*) calloc(n, sizeof(int)); if(ptr == NULL) { printf("Hata! Bellek tahsis edilemedi."); exit(0); } printf("Elemanları girin: "); for(i = 0; i < n; ++i) { scanf("%d", ptr + i); sum += *(ptr + i); } printf("Toplam = %d", sum); free(ptr); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int *ptr, i, n1, n2; printf("Boyutu girin: "); scanf("%d", &n1); ptr = (int*) malloc(n1 * sizeof(int)); printf("Önceden tahsis edilen belleğin adresleri:\n"); for(i = 0; i < n1; ++i) printf("%pc\n", ptr + i); printf("\nYeni boyutu girin: "); scanf("%d", &n2); // Belleği yeniden tahsis etme ptr = realloc(ptr, n2 * sizeof(int)); printf("Yeni tahsis edilen belleğin adresleri:\n"); for(i = 0; i < n2; ++i) printf("%pc\n", ptr + i); free(ptr); return 0; }
#include <stdio.h> void swap(int *n1, int *n2); int main() { int num1 = 5, num2 = 10; // num1 ve num2'nin adresleri swap() fonksiyonuna gönderilir swap(&num1, &num2); printf("num1 = %d\n", num1); printf("num2 = %d", num2); return 0; } void swap(int* n1, int* n2) { int temp; temp = *n1; *n1 = *n2; *n2 = temp; }
Bu örnekte, swap(&num1, &num2);
ifadesiyle num1 ve num2'nin adresleri fonksiyona gönderilir. Fonksiyonda *n1
ve *n2
değiştirilince, main() içerisindeki değişkenler de değişir.
#include <stdio.h> void addOne(int* ptr) { (*ptr)++; // *ptr değerine 1 eklenir } int main() { int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; }
Bu örnekte, p
işaretçisi &i
adresini tutar ve addOne(p)
çağrısı ile fonksiyona gönderilir. Fonksiyonda, (*ptr)++;
ifadesiyle i
değeri 1 artırılır.
#include <stdio.h> // Fonksiyon, parametre olarak gönderilen işaretçi ile değişkenin değerini 5 artırır. void modifyVal(int* myptr) { // myptr'nin işaret ettiği değeri değiştiriyoruz *myptr = *myptr + 5; } int main() { int x = 5; int* myptr = &x; // İşaretçi myptr fonksiyona gönderilir modifyVal(myptr); // x'in değeri değiştirilmiş olarak yazdırılır printf("x'in değiştirilmiş değeri: %d\n", x); return 0; }
Bu örnekte, modifyVal()
fonksiyonu myptr
aracılığıyla x
değerini değiştirir.
#include <stdio.h> void square(int *n) { *n = (*n) * (*n); } int main() { int num = 4; square(&num); printf("Karesi: %d\n", num); // Çıktı: 16 return 0; }
#include <stdio.h> void doubleElements(int *arr, int size) { for (int i = 0; i < size; i++) { *(arr + i) *= 2; } } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); doubleElements(arr, size); printf("İkiye katlanmış dizi: "); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }