Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как одномерный массив представить двумерным? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ киньте задания по лабам и курсачам где-то для 1-2 курса, заранее спасибо) http://www.cyberforum.ru/cpp-beginners/thread897318.html
по с++, delphi, c# хочу поучить пока время есть
C++ Разложить время по компонентам Возможно ли получить, скажем, текущую секунду системного времени, используя std::chrono, и не опускаясь при этом до уровня time_t? http://www.cyberforum.ru/cpp-beginners/thread897313.html
C++ В заданном предложении удалить самое короткое слово
4. В заданном предложении удалить самое короткое слово. Считать, что слова в тексте отделены друг от друга одним пробелом.
C++ Работа с прерываниями
Доброе время суток. Возник вопрос, недавно я начал учиться работать с прерываниями в DOS, но до конца еще не разобрался, а сейчас пишу программу для поиска файлов в каталоге. Но я не знаю как...
C++ Вывести значение первого из элементов массива A (Аk), которые удовлетворяют неравенству Аk < A10 http://www.cyberforum.ru/cpp-beginners/thread897286.html
Данный массив А ненулевых целых чисел размера 10. Вывести значение первого из тех его элементов АК, которые удовлетворяют неравенство АК <A10.Якщо таких элементов нет, то вывести 0.
C++ Сочетание цыкла и разветвления Нужно изменить первый отрицательный елемент сумой парных елементов которые размещенны после него подробнее

Показать сообщение отдельно
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,203
11.06.2014, 11:54
Цитата Сообщение от Pro_ha Посмотреть сообщение
DWORD *pixels= &img[0];
почему DWORD???
если работаешь с виндой то есть COLORREF
что ты дальше делаешь с картинкой?
есть тупой вариант создать двумерный массив и скопировать в него
есть вариант по типу Croessmah, но без структуры
типа
C++
1
2
3
4
inline COLORREF getPixel(COLORREF * arr,int x,int y)
  {
    return arr[x+y*w];
  }
можно и со структурой(классом)но заинлайнить функцию

если боишься умножения то зря
в любом случае оно будет присутствовать
если объявишь массив так
C++
1
int  a[10][10];
то в памяти он будет лежать одномерным и обращения типа
C++
1
b=a[5][5];
на уровне ассемблера будут выглядеть так
b=*(a+(5+5*10));
единственно что если ширина кратна степени 2 то умножение могут заменится сдвигом
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru