2015-12-05 24 views
5

Chuyển đổi chuỗi char* rất dễ dàng trong C#Chuyển đổi char [,] mảng để char **

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

Nhưng không ai biết làm thế nào để chuyển đổi char[,] vào char** trong C#?

+4

Trong hầu hết các ngôn ngữ, mảng 2 chiều không được lưu trữ theo cách tương thích với char **. Tôi không chắc chắn của C# 's thực hiện, nhưng tôi muốn nghi ngờ mảng 2D chỉ được lưu trữ như là một khối liền kề chiều dài 'x * y', mà sẽ tương đương với một char *. –

+0

@Bobby Sacamano bạn thật tuyệt vời: D Tôi phải dùng char [,] p = new char [2, 2]; p [0, 0] = '1'; p [0, 1] = '2'; p [1, 0] = '3'; p [1, 1] = '4'; cố định (char * s = p) và nó hoạt động. – alokkoolol123

+0

@bobby bạn đêm muốn thêm nó làm câu trả lời. Khác OP có thể làm điều đó. –

Trả lời

1

Mã bên dưới cho biết cách chuyển đổi mảng char[,] thành con trỏ. Nó cũng thể hiện cách các ký tự có thể được ghi vào mảng và lấy ra thông qua con trỏ. Bạn cũng có thể viết bằng cách sử dụng con trỏ và đọc bằng cách sử dụng mảng. Tất cả đều giống nhau, vì nó tham chiếu cùng một dữ liệu.

  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' 
      } 
Các vấn đề liên quan