Şimdi Ara

Buradaki hata nedir (C)?

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
626
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Çıldıracağım artık şu hatayı alıyorum.


    [Error] cannot convert 'int (*)[N]' to 'int**' for argument '1' to 'int matrisleriAl(int**, uint8_t, uint8_t)'
    [Error] cannot convert 'int (*)[N]' to 'int**' for argument '1' to 'int matrisleriAl(int**, uint8_t, uint8_t)'


    İlgili yerler
    int matrisleriAl(int*[],uint8_t,uint8_t);


    matrisleriAl(birinciMatris,M,N);
    matrisleriAl(ikinciMatris,N,P);

    int matrisleriAl(int *matris[],uint8_t x,uint8_t y)
    {
    .
    .
    .
    }



  • Fonksiyon parametresi doğru gözüktü bana. Pointer dizisi yakalamaya çalışmışsın. Pointer dizisi de C'de pointer'a işaret eden pointer'a denk muhtemelen. Yani:
    int * pointerDizisi[5] => int ** pointerTutanPointer
    Bu yüzden derleyici int** 'a dönüştürülemedi diye hata veriyor.
    Hatanın asıl kaynağı fonksiyona geçirdiğin parametreye bağlı, fonksiyona geçirilen parametrelerle ilgili problem şu ki, parametreler fonksiyonda ki parametrelerle aynı değil. Hatta tahminimce iki boyutlu bir dizi geçirmeye çalışıyorsun. İki boyutlu diziyi yakalamanın yolu fonksiyonda tanımladığın gibi değil(gerçi hatırlamıyorum belki öyle de yapılıyor olabilir) bir değer tutan pointer yerine bir den fazla değer tutan parametre kullanmak. O da şöyle inşaallah:
    int (*birdenFazlaDeğer)[5]; //Mesela burada pointer dizinin 5 elemanını birden tutuyor.
    Mesela dizimiz şöyle olsun:
    int paragraf[10][5] //10 cümle var, her birisinde 5 harf var.
    Eğer bizim yeni oluşturduğumuz pointer bu paragrafa işaret ederse, pointer'ımız paragraf[0]'ı bir den tutacak. Normaldeyse paragraf[0][0] 'ın değerini bir seferde tutabiliriz sadece.

    Uzun lafın kısası:
    fonksiyon parametresini int (*deneme)[] yaparsan düzeleceğini düşünüyorum. Dizi ayraçları([]) içine bir değer koyman gerekebilir diye düşünüyorum, çünkü derleyici genelde ilk index'i tahmin ediyor.
    int matrisleriAl(int (*matris)[],uint8_t x,uint8_t y) -> Böyle yani




  • imammmm İ kullanıcısına yanıt
    Sütunu matrise tanımlarken yazmak gerekiyormuş. Gösterim yaparken sorun yaşamasın diye. Ama hala hata alıyorum.

    Şöyle yaptım.

    void matrisleriAl(uint8_t x,uint8_t y,int matris[][y]);

    Hata şu;

    [Error] use of parameter outside function body before ']' token
  • quote:

    Orijinalden alıntı: Trespuanie

    Sütunu matrise tanımlarken yazmak gerekiyormuş. Gösterim yaparken sorun yaşamasın diye. Ama hala hata alıyorum.

    Şöyle yaptım.

    void matrisleriAl(uint8_t x,uint8_t y,int matris[][y]);

    Hata şu;

    [Error] use of parameter outside function body before ']' token
    Parametre olarak y tanımlanmış, aynı zamanda parametre olarak geçirilen y, dizinin 2. indeksinde kullanılmış. Bir parametreyi başka bir parametre için kullanmak hata sebebi diye düşünüyorum inşaallah.
    Çözüm:
    #define SUTUN 10(ya da sütun numarası kaç ise o)
    ...(....,...,int matris[][SUTUN]){

    }



    < Bu mesaj bu kişi tarafından değiştirildi imammmm -- 3 Nisan 2019; 1:45:33 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Yapay Zeka’dan İlgili Konular
    c'de yardım
    14 yıl önce açıldı
    A/C tuşu gerekli midir?
    6 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.