Форум программистов, компьютерный форум CyberForum.ru

Как с помощью указателя пройтись по двухмерному массиву? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
ElectroNik
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 6
20.02.2011, 15:25     Как с помощью указателя пройтись по двухмерному массиву? #1
Всем привет. Подскажите плиз. Как с помощью указателя пройтись по двухмерному массиву и выдать значения елементов.
есть массив
C++
1
2
3
4
5
  int array[MAX][MAX]={             
                      {3,2,1},      
                      {3,4,5},      
                      {9,6,7}       
                      };
затем пробуем так:
C++
1
2
int *ps_array;
    ps_array=&array;
не выходит
ошибка 'second.cpp:13: cannot convert `int (*)[3][3]' to `int *' in assignment'

Заранее благодарен за ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 15:25     Как с помощью указателя пройтись по двухмерному массиву?
Посмотрите здесь:

Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... C++
Записать в переданную переменную результат с помощью указателя C++
Как работает инкрементирование указателя? C++
C++ Передача как указателя и как ссылки
Как пройтись по чужому исходному коду ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Meer
0 / 0 / 0
Регистрация: 19.02.2011
Сообщений: 17
20.02.2011, 19:30     Как с помощью указателя пройтись по двухмерному массиву? #2
C++
1
int *p = &array[0][0];
John Paramol
Сообщений: n/a
25.02.2011, 10:05     Как с помощью указателя пройтись по двухмерному массиву? #3
Вопрос в тему, у меня наоборот есть указатель на одномерный массив графических данных,
он передается в функцию, там для удобства хотелось бы получить указатель на массив, то есть по сути двумерный массив.
Пытаюсь сделать что-то вроде этого (код инвалидный):
C++
1
2
3
4
5
void function(void *buf, const UINT Width, const UINT Height)
{
  (TColor (*)[Height]) pointer = (TColor (*)[Height])buf;
  pointer[0][0]=0; // типа двумерный массив
}
Подобное преобразование возможно вообще?
Заранее спасибо.
SevaB
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 39
25.02.2011, 13:21     Как с помощью указателя пройтись по двухмерному массиву? #4
TColor array[N][M] - по сути - массив массивов. И с одномерным массивом он не совместим.

В Вашем случае можно сделать следующее
C++
1
2
void function(void *buf, const UINT Width, const UINT Height)
#define B(i,j) ((TColor *)buf)[(j)*Height+(i)]
Это самое макро, по сути будет заменять двумерный массив.
John Paramol
Сообщений: n/a
26.02.2011, 08:31     Как с помощью указателя пройтись по двухмерному массиву? #5
Все работает, даже странно =(:-))
Спасибо
Yandex
Объявления
26.02.2011, 08:31     Как с помощью указателя пройтись по двухмерному массиву?
Ответ Создать тему
Опции темы

Текущее время: 23:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru