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:
Parametre 2 boyutlu bir dizidir
int array[10][10]; void passFunc(int a[][10]) { // ... } passFunc(array);
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);
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ş:
Nasıl Ruby başka bir dizi için bir diz...
Nasıl python iki boyutlu bir dizi tanı...
Nasıl bir dizi içinde geçen anahtar al...
Sözdizimi, iki boyutlu bir dizi oluştu...
Geçen anahtar kelime python parametre ...