Çözüldü "int * foo(int); vs int (*foo)(int);" arasındaki temel fark nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

UmpaLumpalar

Centipat
Katılım
8 Ocak 2022
Mesajlar
72
Daha fazla  
Cinsiyet
Erkek
Bu ikisinin arasındaki temel farklar nelerdir acaba? Ben bir şeyler anladım fakat karman çorman oldu. yardımcı olabilecek birileri varsa çok sevinirim.
 
Çözüm
Bu "int *foo(int)" için:
C:
#include <stdio.h>

int *foo(int); // Altta tanimlanan foo fonksyonunun prototoipi yapildi boylece fonksyon altta olmasina ragmen main'de kullanabilecegiz.

int main()
{
    foo(20);
    return 0;
}

int *foo(int a)
{
    printf("a'nin degeri: %d", a);
    return 0;
}
Çıktısı:
Kod:
a'nin degeri: 20

Bu da "int (*foo)(int)" için:
C:
#include <stdio.h>

int HelloWorld(int a)
{
    printf("Hello World a'nin degeri: %d\n", a);
    return 0;
}

int main()
{
    int (*foo)(int); // int donen ve int bir parametreye sahip fonksyonun gostericisi
    foo = HelloWorld; // HelloWorld'un adresini foo'ya atadik boylece artik foo ile HelloWorld'u cagirmamiz ayni anlama gelecek.
    foo(10);
    HelloWorld(20);
    return 0;
}
Çıktısı:
Kod:
Hello World a'nin degeri: 10
Hello World a'nin degeri: 20
int * foo(int) dediğimiz int pointer dönen, int bir parametreye sahip bir fonksyon prototipi.
int (*foo)(int) ise int dönen ve bir int parametresine sahip bir fonksyon göstericisidir, bu göstericiye kendisiyle aynı tipe sahip bir fonksyonu atayıp kullanabilirsin.
 
int * foo(int) dediğimiz int pointer dönen, int bir parametreye sahip bir fonksyon prototipi.
int (*foo)(int) ise int dönen ve bir int parametresine sahip bir fonksyon göstericisidir, bu göstericiye kendisiyle aynı tipe sahip bir fonksyonu atayıp kullanabilirsin.
tanım olarak kafama oturdu fakat ikisini ayırt edecek bir örnek verebilir misiniz acaba? nerede kullanacağımı bilemeden tam oturmuyor.
 
Bu "int *foo(int)" için:
C:
#include <stdio.h>

int *foo(int); // Altta tanimlanan foo fonksyonunun prototoipi yapildi boylece fonksyon altta olmasina ragmen main'de kullanabilecegiz.

int main()
{
    foo(20);
    return 0;
}

int *foo(int a)
{
    printf("a'nin degeri: %d", a);
    return 0;
}
Çıktısı:
Kod:
a'nin degeri: 20

Bu da "int (*foo)(int)" için:
C:
#include <stdio.h>

int HelloWorld(int a)
{
    printf("Hello World a'nin degeri: %d\n", a);
    return 0;
}

int main()
{
    int (*foo)(int); // int donen ve int bir parametreye sahip fonksyonun gostericisi
    foo = HelloWorld; // HelloWorld'un adresini foo'ya atadik boylece artik foo ile HelloWorld'u cagirmamiz ayni anlama gelecek.
    foo(10);
    HelloWorld(20);
    return 0;
}
Çıktısı:
Kod:
Hello World a'nin degeri: 10
Hello World a'nin degeri: 20
 
Çözüm
Bu "int *foo(int)" için:
C:
#include <stdio.h>

int *foo(int); // Altta tanimlanan foo fonksyonunun prototoipi yapildi boylece fonksyon altta olmasina ragmen main'de kullanabilecegiz.

int main()
{
    foo(20);
    return 0;
}

int *foo(int a)
{
    printf("a'nin degeri: %d", a);
    return 0;
}
Çıktısı:
Kod:
a'nin degeri: 20

Bu da "int (*foo)(int)" için:
C:
#include <stdio.h>

int HelloWorld(int a)
{
    printf("Hello World a'nin degeri: %d\n", a);
    return 0;
}

int main()
{
    int (*foo)(int); // int donen ve int bir parametreye sahip fonksyonun gostericisi
    foo = HelloWorld; // HelloWorld'un adresini foo'ya atadik boylece artik foo ile HelloWorld'u cagirmamiz ayni anlama gelecek.
    foo(10);
    HelloWorld(20);
    return 0;
}
Çıktısı:
Kod:
Hello World a'nin degeri: 10
Hello World a'nin degeri: 20
Gayet açıklayıcı olmuş. Yardım için teşekkür ederim :) .
 

Yeni konular

Geri
Yukarı