2015-12-05 8 views
5

[、] char型**変換することは簡単ではC#はcharへの配列が<code>char*</code>に文字列を変換する

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

である。しかし誰もがC#でchar**char[,]を変換する方法を知っているのですか?

+4

ほとんどの言語では、2次元配列はchar **と互換性のある方法で格納されません。私はC#の実装についてはわかりませんが、2D配列はちょうどchar *に相当する長さ 'x * y'の連続ブロックとして格納されていると思われます。 –

+0

@Bobby Sacamanoあなたは最高です:D私はchar [、] p = new char [2、2];を使用しなければなりませんでした。 p [0、0] = '1'; p [0、1] = '2'; p [1、0] = '3'; p [1,1] = '4'; 固定(char * s = p)と動作します。 – alokkoolol123

+0

@bobbyあなたは夜、答えとしてそれを追加します。それ以外のOPはそれを行うことができます。 –

答えて

1

以下のコードは、char[,]の配列をポインタに変換する方法を示しています。また、文字列を文字列に書き込んでポインタで取り出す方法も示しています。ポインタを使って書くことも、配列を使って読むこともできます。同じデータを参照するので、すべて同じです。

  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' 
      } 
関連する問題