Tôi muốn gán mảng được phân bổ tĩnh, đa chiều cho một biến tạm thời. Hãy xem xét ví dụ sau:Làm thế nào để gán một mảng đa chiều cho một biến tạm thời?
void foo(int b[3][2])
{
b[1][1] = 1; // no segmentation fault
}
int main()
{
int a[3][2] = {{1, 2}, {11, 12}, {21, 22}};
foo(a);
int** c;
c = (int**)&a;
c[1][1] = 1; // segmentation fault on execution
int* d[3];
d[0] = (int*)&(a[0]);
d[1] = (int*)&(a[1]);
d[2] = (int*)&(a[2]);
d[1][1] = 1; // no segmentation fault
return 0;
}
Về cơ bản tôi muốn làm những gì trình biên dịch thực hiện với tham số b
của foo()
. Nhưng giải pháp làm việc duy nhất tôi có thể đưa ra là d
. Có cách nào ít phức tạp hơn không?
Thật kỳ lạ có bao nhiêu người nghĩ rằng một mảng 2D bằng cách nào đó trực tiếp chuyển sang con trỏ tới con trỏ. – tenfour