Я знаю, что есть несколько вопросов о том, что дает хорошие (и рабочие) решения, но ни один ИМХО, который четко говорит, что это лучший способ достичь этого. Итак, предположим, что у нас есть некоторые 2D массив:C указатель на двумерный массив
int tab1[100][280];
Мы хотим, чтобы указатель, который указывает на этой 2D массива. Для достижения этой цели, мы можем сделать:
int (*pointer)[280]; // pointer creation
pointer = tab1; //assignation
pointer[5][12] = 517; // use
int myint = pointer[5][12]; // use
или, в качестве альтернативы:
int (*pointer)[100][280]; // pointer creation
pointer = &tab1; //assignation
(*pointer)[5][12] = 517; // use
int myint = (*pointer)[5][12]; // use
ОК, как кажется, работает хорошо. Теперь я хотел бы знать:
- Каков наилучший способ, 1-й или 2-й?
- оба равны для компилятора? (скорость, перфорация)
- - это одно из этих решений, которое потребляет больше памяти, чем другое?
- Что чаще всего используется разработчиками?
Помните, что массив указателей (как в 'int * pointer [280];') - это не то же самое, что массив массивов. –
привет, ferdinand. Я скорректировал первое решение с круглыми скобками. Извиняется. – Chrysotribax