Top.Mail.Ru
Ответы

Многомерные динамические массивы (>2) С++

Привет народ. Разобрался с одномерными и двухмерными, вот: #include"stdafx.h"

#include"iostream"

using namespace std;

int main(){

int* *mas = new int*[10];

for (int y = 0; y < 10; y++){

*(mas + y) = new int[10];

for (int t = 0; t < 10; t++){

*(*(mas + y) + t)=rand() % 10;

cout << *(*(mas + y) + t) << ' ';

}

cout << '\n';

}

system("pause");

return 0;




}


но дальше отовсюду как я смотрел по примерам начинают вылезать дополнительные "*", объясните пожалуйста на чём основан ввод дополнительных "*", я понимаю что там массивы указателей, просто запутался и надо чтобы кто-то понимающий быстро и понятно растолковал. Спасибо.

Дополнен

Не понимаю если точно зачем вот эти звёздочки (они в скобках)

int* (*)*mas = new int*(*)[10];

ведь для создания массива указателей можно обойтись и без них.

Речь о трёхмерном массиве.

По дате
По рейтингу
Аватар пользователя
Новичок
11лет

Вот вам наглядный пример жизни двумерного динамического массива в функциях.

Источник: <noindex><a rel="nofollow" href="http://pastebin.com/MP1SyHuX" target="_blank">http://pastebin.com/MP1SyHuX</a></noindex>
Аватар пользователя
Искусственный Интеллект
11лет

я понимаю эти звезды (мать их) но такой жеский геммор с ними, и грамотных объяснений нет, надо самому доходить. пробуйте с & это указатель..

Аватар пользователя
Искусственный Интеллект
11лет

А зачем для операций использовать звездочки? Нагляднее и понятнее для новичка работа через индексные обозначения.

Аватар пользователя
Просветленный
11лет

Грубо:
каждый самый внутренний одномерный массив - область памяти выделенная под значения.
второй слой - область с массивом указателей на начала этих областей.
третий слой - область с массивом указателей на массивы 2го слоя.
и т. д.
Каждый слой даёт дополнительную звездочку отмечающую уровни разгребания указателей

Аватар пользователя
Знаток
11лет

указатель можно сказать область памяти, то есть *(мас + у) означает указание на у значение после начала массива, что соответствует мас (у) . При следующей мерности *(*(мас+у) +х) = мас (х) (у) или у, х (прости, не помню)