5
[、] char型**変換することは簡単ではC#はcharへの配列が<code>char*</code>に文字列を変換する
string p = "qwerty";
fixed(char* s = p)
である。しかし誰もがC#でchar**
にchar[,]
を変換する方法を知っているのですか?
[、] char型**変換することは簡単ではC#はcharへの配列が<code>char*</code>に文字列を変換する
string p = "qwerty";
fixed(char* s = p)
である。しかし誰もがC#でchar**
にchar[,]
を変換する方法を知っているのですか?
以下のコードは、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'
}
ほとんどの言語では、2次元配列はchar **と互換性のある方法で格納されません。私はC#の実装についてはわかりませんが、2D配列はちょうどchar *に相当する長さ 'x * y'の連続ブロックとして格納されていると思われます。 –
@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
@bobbyあなたは夜、答えとしてそれを追加します。それ以外のOPはそれを行うことができます。 –