Добавлено: Ср июл 22, 2009 18:03:13
тут небольшая путаница с тем, что делает компилятор, и с тем, что хотите делать вы. все эти книжные порождения на самом деле большей частью теория, на практике в МК не так много памяти, чтобы строить кучу промежуточных массивов - просто компилятор следит за обращениями к элементам массива и в нужный момент подствалет нужный указатель. так что виртуально - да, массив указателей на массивы, реально - просто последовательность чисел.
для массива a[N][M] обращение к a[1][2] будет равносильно, как если бы был массив a[N*M] и обращение шло к a[1*N+M] (тут, возможно, N и M надо поменять местами - я запамятовал порядок, в ктором следуют элементы массивов по строкам или столбцам).
зная это, наверное, несложно работать и с указателями...по-моему, так...
для массива a[N][M] обращение к a[1][2] будет равносильно, как если бы был массив a[N*M] и обращение шло к a[1*N+M] (тут, возможно, N и M надо поменять местами - я запамятовал порядок, в ктором следуют элементы массивов по строкам или столбцам).
зная это, наверное, несложно работать и с указателями...
Код: Выделить всё
long a[5][5];
long *p = a[1]; // указатель на массив "первая строка"
long tmp = p[2]; - второй элемент первой строки...