C'de fonksiyona dizi gönderip geriye dizi alma

KralYolu

Kilopat
Katılım
21 Ocak 2014
Mesajlar
1.541
Makaleler
19
Çözümler
5
Yer
Karabük
Daha fazla  
Cinsiyet
Erkek
C'de bir fonksiyonum var parametresi integer bir dizi, ve ben fonksiyonun içinde dizinin elemanlarına birkaç işlemler yapıp onları ondalıklı bir sayı haline getiriyorum. Sonra her bir elemanı fonksiyonun içinde oluşturduğum float başka bir diziye atıyorum.

Bu oluşturduğum başka float diziyi main fonksiyonunda ekrana yazdıracağım. Tek tek indeks şeklinde gönderdiğimde bir sıkıntı olmuyor. (return S[0]; ) Fakat komple diziyi göndermek istediğimde IDE return kısmında şöyle bir hata veriyor:

[Error] cannot convert 'float*' to 'float' in return

Fonksiyonum: float stdSapma (int a [ ] [ 3 ]);

Fonksiyonu çağırma şeklim: stdSapma(A) --> A main fonksiyonu içinde tanımladığım integer dizi.

Return kısmı: return S;

Sorun nedir ve nasıl hallederim? Şimdiden teşekkürler.

NOT: Komple kod çok fazla satırdan oluştuğu için atmadım. Umarım bu şekilde anlaşılır olmuştur.
 
C dilinde doğrudan array diye bir veri tipi yoktur. Arrayler bellek üzerinde yan yana "dizilmiş" primitivelerden oluşur. int[], float[] dediğiniz zaman dizi değil dizinin ilk elemanın pointerını oluşturursunuz.

Uzun lafın kısası float dizisi return etmek istiyorsanız float* şeklinde bir return type belirtmeniz gerekiyor.
Çünkü arrayler pass by value olarak gönderilemez. Yalnızca pass by referance şeklinde gönderilebilir.

C:
float* stdSapma(int* array){
    ...
}
 
C dilinde doğrudan array diye bir veri tipi yoktur. Arrayler bellek üzerinde yan yana "dizilmiş" primitivelerden oluşur. int[], float[] dediğiniz zaman dizi değil dizinin ilk elemanın pointerını oluşturursunuz.

Uzun lafın kısası float dizisi return etmek istiyorsanız float* şeklinde bir return type belirtmeniz gerekiyor.
Çünkü arrayler pass by value olarak gönderilemez. Yalnızca pass by referance şeklinde gönderilebilir.

C:
float* stdSapma(int* array){
    ...
}
Teşekkürler. Pointerler mevzusuna çalışmalıyım o halde.
 

Yeni konular

Geri
Yukarı