15.02.2007, 19:44
общий
это ответ
Здравствуйте, GOrilla!
данные в одномерном массиве и многомерном хранятся одинаково, тоесть последовательно в памяти.
все зависит от интерпритации одномерного массива.
самый простой и очевидный способ это просто скопировать содержимое одномерного массива в многомерный. в приложении пример 1
но в данном случае вы дублируете массив.
можно просто вспомнить что синтаксис доступа к многомерному массиву это всего лишь удобная запись, но никто не мешает воспользоватся и указателями.
тоесть A[i][j] в вашем случае аналог *(M + 5*i + j)
смотрите пример 2 в приложении.
недостаток метода - некрасивый синтаксис
преимущество - не происходит никакого копирования
Приложение:
пример 1:#include <stdio.h>#include <string.h>int main(){ int i, j; char M[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; char A[3][5]; memcpy(A, M, sizeof(A)); for (i = 0; i < 3;i++) { for (j = 0; j < 5; j++) printf("%02d ", A[i][j]); printf("\n"); } return 0;}пример 2#include <stdio.h>int main(){ int i, j; char M[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; printf("\n"); for (i = 0; i < 3;i++) { for (j = 0; j < 5; j++) printf("%02d ", *(M + 5*i + j)); printf("\n"); } return 0;}