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

Return многомерного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка массива методом пузырька http://www.cyberforum.ru/cpp-beginners/thread1187435.html
Доброго времени суток уважаемые форумчане. Столкнулся с такой проблемой, не знаю как её решить. Суть задачи такова: Нужно реализовать функции: void max(int* tab) // загоняет в массив цифры по...
C++ Функция находит в строке первый символ, который не входит в другую строку Нужно написать собственную функцию, которая находит в строке первый символ, который не входит в другую заданную строку. Есть код, но работает не очень. Если ввести: 1 строка "малая рама" и 2 строка... http://www.cyberforum.ru/cpp-beginners/thread1187428.html
C++ Даны целые числа a1…a10, целочисленная квадратная матрица порядка n
Даны целые числа a1…a10, целочисленная квадратная матрица порядка n. Заменить нулями в матрице те элементы с четной суммой индексов, для которых имеются равные среди a1…a10. Помогите написать код,...
Ошибка "Debug Assertion Failed" C++
Привет всем. Я практикуюсь в работе с файлами. Решил написать простенькую программу для вывода суммы двух чисел. Но программа выдает ошибку "Debug Assertion Failed". Что я должен исправить в коде?...
C++ Прокомментировать код http://www.cyberforum.ru/cpp-beginners/thread1187418.html
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int maxnode = 4010*100; const int sigma_size = 26; const int MAXN = 300010; const int MOD = 20071027;
C++ Удалить из массива первое простое число, Создать функции для определения максимума простого числа в массиве вещественных чисел найти элемент , превышающий его среднее арифметическое значение если таких элементов несколько , определить их количество . Удалить из массива первое простое число .... подробнее

Показать сообщение отдельно
Юрий77
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 2
23.04.2015, 22:09
Ну хоть кто нибудь сказал как возвращать многомерный массив,
Ну сколько можно мучить эту тему, замучили со своими указателями, инициализациями...
Вот как правильно возвращать многомерный массив на примере двумерного:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int (*getArr())[10]
{
   static int arr[10][10];
   return arr;
}
int main()
{
   int (*arr2)[10];
   arr2=getArr();
   //example of use
   cout << arr2[1][5];
}
Вот и вся мудрость, и не надо говорить, что массивы из функции не возвращаются.

Добавлено через 2 часа 7 минут
Не вводите в заблуждение ни себя ни других пользователей, если точно не уверены в ответе.
В массиве будь он одномерный или многомерный в качестве данных не содержатся указатели.

Самый первых элемент массива указывает на начало сплошного потока данных, например int.
Число элементов массива будет равна произведению размерностей массива друг на друга.
Размерности массива указываются только для компилятора и Вашего удобства.
Когда Вы инициализируете размерности для массива, то компилятор запоминает эти данные.
Далее, при попытке доступа к данным, компилятор отсчитывает от самого начала массива
число равное смещению на примере покажу:
int arr[measure1][measure2][measure3], допустим cout << arr[1][2][3];

смещение данных будет: 1 * measure2 * measure3 + 2 * measure3 + 3;
можете убедиться :
получаем указатель на первый элемент int* arrPtr = &arr[0][0][0];
прибавляем к нему вычисленное смещение arrPtr+=1 * measure2 * measure3 + 2 * measure3 + 3;
заносим в массив данные arr[1][2][3]=5;
и получаем значение из указателя, полученного выше cout<< *arrPtr;
Таким образом все указатели идут в массиве один за другим без разбиения.
На самом нижнем уровне массивы и не существуют вовсе.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.