SORU
7 Ocak 2012, CUMARTESİ


Geçen C bir işlev için 2 BOYUTLU bir dizi

Almak istediğim bir fonksiyon, parametre olarak, değişken boyutlu 2 BOYUTLU bir dizi var.

Ben şimdiye kadar bu var:

void myFunction(double** myArray){
     myArray[x][y] = 5;
     etc...
}

Ve bir dizi benim kod başka bir yerde ilan ediyorum:

double anArray[10][10];

Ancak, myFunction(anArray) beni arayıp bir hata veriyor.

Ben geçerken dizi kopyalamak istemiyorum. Herhangi bir değişiklik myFunction anArray durumu değiştirmek gerekir. Eğer doğru anladıysam, ben sadece bir argüman olarak 2 BOYUTLU bir dizi için bir işaretçi geçirmek istiyorum. İşlevi farklı boyutlarda da dizileri kabul etmesi gerekir. Örneğin, [10][10] [5][5]. Bunu nasıl yapabilirim?

CEVAP
7 Ocak 2012, CUMARTESİ


Bir işlev için 2 boyutlu bir dizi geçirmek için üç yolu vardır:

  1. Parametre 2 boyutlu bir dizidir

    int array[10][10];
    void passFunc(int a[][10])
    {
        // ...
    }
    passFunc(array);
    
  2. Parametre bir dizi işaretçileri içeren

    int *array[10];
    for(int i = 0; i < 10; i  )
        array[i] = new int[10];
    void passFunc(int *a[10]) //Array containing pointers
    {
        // ...
    }
    passFunc(array);
    
  3. Parametre işaretçisi bir işaretçi

    int **array;
    array = new int *[10];
    for(int i = 0; i <10; i  )
        array[i] = new int[10];
    void passFunc(int **a)
    {
        // ...
    }
    passFunc(array);
    

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Jay Will

    Jay Will

    19 NİSAN 2006
  • LIVESTRONG.COM

    LIVESTRONG.C

    5 EKİM 2005