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

Приведение любого двумерного массива к типу указатель на указатель - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Конфликт имен в библиотеках http://www.cyberforum.ru/cpp-beginners/thread1227155.html
Здравствуйте. Возникла проблема при одновременном подключении #include <X11/extensions/xf86vmode.h> и #include "FreeImage.h" Код ошибки: In file included from GUIImageManager.h:13:0, from main.cpp:13: /usr/include/FreeImage.h:139:17: ошибка: conflicting declaration «typedef int32_t BOOL» In file included from /usr/include/X11/extensions/xf86vmode.h:37:0, ...
C++ Найти среднее арифметическое двух диагоналей массива Сложная задачка разобраться не могу! ну нада чтобы была формула вычисления а не тупо добавить диагонали и пощитать размер массива может быть любой! Помогите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1227126.html
Как подключить GDI+ в Code::Blocks? C++
Здравствуйте. Пытаюсь работать с графикой в Code::Blocks, но, найти GDI+ не удалось: т.е. ни библиотек, ни заголовочных файлов там нет.Откуда их можно скачать/установить? в интернете есть 2-3 подобных вопроса, как они решаются- неизвестно, никто не дал точного ответа.Прошу вашей помощи.
C++ Управляемый препроцессинг
Наверняка промахнусь разделом, так что переместите пожалуйста если есть более подходящий.Суть вопроса такова: есть условный исходник, который участвует в сборке под несколько осей и несколько типов приложений. Как следствие, он представляет собой макароны из директив условной компиляции и т.п. Возможно ли: путем управления препроцессором получить исходник под какую-то одну (для начала) ось, т.е....
C++ Программа должна удалять из строки все символы, что стоят на чётных местах после буквы "а" http://www.cyberforum.ru/cpp-beginners/thread1227018.html
Программа должна удалять из строки все символы, что стоят на чётных местах после буквы "а". Сделал программу которая это делает, но только с латиницей. Как сюда подключить кириллицу? #include<iostream> #include<cstring> using namespace std; int main() { setlocale(LC_ALL, "Russian"); // Программа работает только с латинницей. const int nSize =300; int i=0, j=0, k=0; char szStr1={0};
C++ Рекурсивное вычисление корня k-й степени Описать рекурсивную функцию RootK(X, K, N) вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Y_0 = 1, Y_{N+1} = Y_N -\frac{Y_N - \frac{X} {Y_N^{k-1}}}{k}, где Y_N обозначает RootK(X, K, N) при фиксированных X и K. Параметры функции: X (> 0) — вещественное число, K (> 1) и N (> 0) — целые. С помощью функции RootK найти для данного числа X... подробнее

Показать сообщение отдельно
NEbO
583 / 451 / 49
Регистрация: 22.01.2009
Сообщений: 1,173
Записей в блоге: 1
Завершенные тесты: 1
14.07.2014, 18:08     Приведение любого двумерного массива к типу указатель на указатель
прикольная задача)) вот так работает, по идее для любого типа, но массив только двумерный поддерживается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
template <class T>
T **my_super_puper_cast(void *arr, T, size_t row_size, size_t row_count) {
    T **result = new T*[row_count];
    for (int i = 0; i < row_count; i++) {
        result[i] = (T*)(row_size*i + (size_t)arr);
    }
    return result;
}
 
#define MY_SUPER_CAST(x) (my_super_puper_cast( reinterpret_cast<void*>(x), x[0][0], sizeof(x[0]), sizeof(x) / sizeof(x[0]) ))
 
int main() {
    int arr1[5][6];
 
    srand(time(0));
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 6; j++) {
            arr1[i][j] = rand();
        }
    }
 
    int **arr_ptr = MY_SUPER_CAST(arr1);
 
    std::cout << arr_ptr[2][3] << " " << arr1[2][3] << std::endl;
    return 0;
}
причем второй аргумент в функции нужен только для того, чтоб компилятор правильно вывел типы
тестил в gcc 4.9.0 и clang 3.4.2, lin

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