LINUX.ORG.RU

массивы и указатели С++


0

0

Всем привет. Подскажите плиз. Как с помощью указателя пройтись по двухмерному массиву и выдать значения елементов.
есть массив
int array[MAX][MAX]={
{3,2,1},
{3,4,5},
{9,6,7}
};

затем пробуем так:

int *ps_array;
ps_array=&array;

не выходит :(
ошибка "second.cpp:13: cannot convert `int (*)[3][3]' to `int *' in assignment"

Заранее благодарен за ответ.

Ответ на: Re: Re: Re: массивы и указатели С++ от phrm

Re: Чем обычно записывают комментарии в *.h файлы в начале?

очевидно:

ps_array= (int*)array

потому что
int array[MAX][MAX]
тоже самое, что и
int array[MAX*MAX]

Марк

++
на счет фортрана, товаришч не прав ..
даже физики, которые на нем пишут
медленно, но "вымирают" ..

carrot
()

Re: массивы и указатели С++

for(int i = 0;i < MAX;i++)
{
  for(int j = 0;j < MAX;j++)
    printf("%3d ", a[i][j]);

  printf("\n");
}

CKulT
()

Re: массивы и указатели С++

А вообще, ИМХО, лучше обходиться без многомерных массивов вообще (конечно,
если речь идет о числах, а не о строках). Не надо множить типы без
надобности. Указатель на double, и хватит. К примеру, обнулить двумерный
массив размеров MxN, это

double array[M*N];

for (i = 0; i < M; i++)
    for (j = 0; j < N; j++) {
        array[i*N + j] = 0;
        //...
    }

Это неплохая практика, об этом у Страуструпа тоже есть, кстати, в "Численных
методах". Так сделано в GNU Scientific Library, реализовано в языке R.
И потом, такой вариант гораздо совместимее с Фортраном (это моя собственная
мысль, возможно ламерская, если кто поправит, буду благодарен) :)

murla
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.