C programlama fonksiyon içinde pointer kullanılabilir mi?

Katılım
12 Aralık 2015
Mesajlar
7.042
Makaleler
9
Çözümler
12
Daha fazla  
Sistem Özellikleri
i7 10750H || GTX 1660 Ti 6 GB Mobile || 2x16 GB RAM || 512 GB NVMe M.2 SSD || 1080p 144 Hz IPS Panel || Windows 11-macOS Big Sur || Acer Nitro 5 AN515-55 2020 ||
Cinsiyet
Erkek
Meslek
Öğrenci
Örneğin bir fonksiyonda bir int değere ulaştık. Bu int değere bir pointer atayarak main fonksiyonda printf ile kullanabilir miyiz? Birkaç deneme yaptım ancak yapamadım.
 
Sorunu tam anlayamadım ama pointer'lar değişkenlerin RAM'deki adresini tutar. Mesela pointer olarak ele alırsak RAM'de bulunan 1100 değerinin denk geldiği değişken değeri fonksiyonda da olsan main'de de olsan aynıdır. Yani fonksiyonda da 1100 adresindeki değişkenin değeri 26'dir, main'de de.

Fonksiyoda 1100 adresindeki değeri değiştirirsen bu mainde de değişir.

1648636874982.png
 
A simple program for pointer illustration is given below:

#include <stdio.h>
int main()
{
int a=10; //variable declaration
int *p; //pointer variable declaration
p=&a; //store address of variable a in pointer p
printf("Address stored in a variable p is:%x\n",p); //accessing the address
printf("Value stored in a variable p is:%d\n",*p); //accessing the value
return 0;
}

Output:

Address stored in a variable p is:60ff08
Value stored in a variable p is:10

Böyle bir şey anladım. Yanlış anlamış da olabilirim. Bir inceleyebilirsin.

 
Öylesine bir örnek üzerinde denemeler yaptım. Kodun tamamını atayım. Derleyici hata veriyor ancak fonksiyon içinde pointer tanımlayamıyorum.

C:
#include <stdio.h>
#include <string.h>


int kirabul(x){
   
    int kira= (x)*12;
   
    *kptr;
   
    kptr=&kira;
   
    printf("Kiraniz: %d\n",kira);
   
    return 0;
}

int elektrikbul(y) {
   
    int elektrik = (y)*12;
   
    *eptr;
   
    eptr=&elektrik;
   
    printf("Elektrik faturaniz: %d\n",elektrik);
   
    return 0;  
   
}



int main() {
   
   
   
    int x, *xptr;
   
    int y, *yptr;
   
    xptr=&x;
   
    yptr=&y;
   
    printf("Evinizin kirasini giriniz:\n");
   
    scanf("%d",&*xptr);
   
    kirabul(*xptr);
   
    printf("Evinizin elektrik faturasini giriniz:\n");
   
    scanf("%d",&*yptr);
   
    elektrikbul(*yptr);
   
    int gider;
   
    gider = *kptr + *eptr;
   
    printf("Gideriniz: %d",gider);
   
    return 0;
}

1648637407765.png


Bu hataları alıyorum. Amacım toplam gideri fonksiyonlar ile hesaplayıp çıkan 2 değerin toplamını da gider değikeni altında vermek. Fonksiyon ve pointer konusunda pratik içib böyle bir şey seçtim yani başka çözüm yolu ve. önermemenizi rica ediyorum.
 
Main metot içinde bir değişken tanımlayın, metota bu değişkenin adresini gönderin. Böylece metotunuz maindeki değişkenleri değiştirebilir. Anladığım kadarıyla girilen aylık bir faturayı 12 ile çarpıp yıllık maliyeti hesaplıyorsunuz. Şu şekilde düşünmeyi deneyin.


[CODE lang="c" title="Fonksiyona nasıl pointer verilir"]void yillik(int *var, int *var2)
{
*var2 = *var*12;
}

int main()
{
int kira=0;
int yillik_kira=0;
//ben kira icin 200 girdim.
scanf("%d",&kira);
//alttaki satira dikkat.
yillik(&kira, &yillik_kira);

printf("1 yıllık kira:%d",yillik_kira);
//cikti: 2400
return 0;
}
[/CODE]
 
Son düzenleme:
Bir fonksiyon içerisinde tanımladığın değişkene artık ihtiyaç duyulmadığı zaman derleyici onu bellekten silecek kodu senin uygulamana eklemiştir, o kod onu bellekten siler. Eğer fonksiyon çalıştırıldıktan sonra da aynı bellek adresini kullanmaya ihtiyacın varsa, malloc() ile dinamik bellek (heap) alanını kullanabilirsin.
 

Technopat Haberler

Yeni konular

Geri
Yukarı