2015-12-05 38 views
5

Conversione stringa char* è facile in C#Conversione char [,] array a char **

string p = "qwerty"; 
fixed(char* s = p) 

Ma qualcuno sa come convertire char[,] in char** in C#?

+4

Nella maggior parte delle lingue 2 array di dimensioni non sono memorizzati in modo compatibile con char **. Non sono sicuro dell'implementazione di C#, ma sospetto che l'array 2D sia appena memorizzato come un blocco contiguo di lunghezza 'x * y', che sarebbe equivalente a un char *. –

+0

@Bobby Sacamano sei fantastico: D ho dovuto usare char [,] p = new char [2, 2]; p [0, 0] = '1'; p [0, 1] = '2'; p [1, 0] = '3'; p [1, 1] = '4'; corretto (char * s = p) e funziona. – alokkoolol123

+0

@bobby tu notte vuoi aggiungerlo come risposta. Altrimenti OP potrebbe farlo. –

risposta

1

Il codice seguente mostra come convertire una matrice char[,] in un puntatore. Dimostra anche come i caratteri possono essere scritti nella matrice e recuperati tramite il puntatore. Si potrebbe anche scrivere usando il puntatore e leggere usando l'array. È lo stesso, poiché fa riferimento agli stessi dati.

  char[,] twoD = new char[2, 2]; 

      // Store characters in a two-dimensional array 
      twoD[0, 0] = 'a'; 
      twoD[0, 1] = 'b'; 
      twoD[1, 0] = 'c'; 
      twoD[1, 1] = 'd'; 

      // Convert to pointer 
      fixed (char* ptr = twoD) 
      { 
       // Access characters throught the pointer 
       char ch0 = ptr[0]; // gets the character 'a' 
       char ch1 = ptr[1]; // gets the character 'b' 
       char ch2 = ptr[2]; // gets the character 'c' 
       char ch3 = ptr[3]; // gets the character 'd' 
      }