170 похожих чатов

Всем привет.Объясните,пожалуйста,правильно ли я понимаю?Допустим у нас есть две матрици:динамическая

и статическая(dmatrix,smatrix).Я хочу работать с ними в функции,непосредственно.Вопрос:функция принимает статичексую матрицу в качестве параметра так(&smatrix[0][0]),а динамическую так(dmatrix), и обращаеся к елементам статичексой так(smatr[i*rows+j]),динамической[i][j],по причине того,что эти две матрици по разному расположены в мамяти?То есть в статической(один елемент з другим), а в динамической елементы разбросаны в памяти?Скорректируйте если не верно,пожалуйста.

24 ответов

26 просмотров

Если используете сырые указатели для реализации матрицы, то да, каждый ряд матрицы не обязан быть смежным другому в памяти

Gleb-Maksimov Автор вопроса
Denys Khodakov
Если используете сырые указатели для реализации ма...

то есть я правильно понял?Функция принимает их в качестве переметров по рпзному и работает с ними тоже оп разному из за резличий в расположении этих матриц в памяти,так?

Gleb Maksimov
то есть я правильно понял?Функция принимает их в к...

В первом сообщении непонятно как вы принимаете матрицы. Но способ индексирования может отличатся, да

Gleb-Maksimov Автор вопроса

Что за динамические Матрицы ещё?

Термины "статический", "динамический" в языках С/С++ имеют вполне определённые значения. Матрица как тип объекта не может менять свой тип в зависимости от того, как она создана, как статический или как динамический объект, в функции она будет передаваться одинаково.

Тут наверное ты имел в виду разницу в типах, многомерный массив или массив массивов. Да, они разные по расположению элементов в памяти, но что там у тебя, не понятно, скорее это многомерный массив.

Denys Khodakov
А как?

Если используете сырые указатели для реализации матрицы, то могут иметь место оба варианта, расположение всех элементов матрицы в смежных адресах, либо расположение только элементов строк матрицы в смежных адресах. Так было бы верно

Denys Khodakov
Если используете сырые указатели для реализации ма...

Ну, использование сырых указателей тут не определяет вообще ничего. Поэтому странно такое читать. Смартпоинтеры могут указывать тоже на любой тип данных

Ilya Zviagin
Ну, использование сырых указателей тут не определя...

Мы говорим про следующую ситуацию: int** mat = new int*[n]; for(int i = 0; i < n; ++i) mat[i] = new int[m]; Выделяемые массивы как могут так и нет быть смежными в памяти

Gleb-Maksimov Автор вопроса
Ilya Zviagin
Тут наверное ты имел в виду разницу в типах, много...

Єто просто две двумерные матрици.Одна статическая(в моем понимании это когда я сразу обозначил сколько в ней столбцов и рядков и менять не планирую) другая динамическая(я выделил определённое кол-во памяти в куче и в любой момент могу его изменить).Вот.И вопрос был в том,что мне было не понятно почему мы их по разному принимаем в качестве параметров в функцию и по разному обращаемся к их элементам в той же функции.Но,как я понял,это из-за разного расположения в памяти.Надеюсь понял верно.

Gleb-Maksimov Автор вопроса
Ilya Zviagin
Что за динамические Матрицы ещё?

Ну мне как в учебном учреждении сказали,так я это и называю😅.Имелась в виду 2Д матрица под которую выделана память в куче.

Gleb Maksimov
Єто просто две двумерные матрици.Одна статическая(...

Первое - массив массивов(один тип данных), второе - указатель на указатель(другой тип). Поэтому по разному передается, но обрабатывать можно одинаково(matrix[i][j]). Так вроде понятнее

Gleb-Maksimov Автор вопроса
Denys Khodakov
Первое - массив массивов(один тип данных), второе ...

Да,спасибо.Но это если не в функции.Если де работать с этими разными типами в функции,то компилятор выдаёт ошибку.Скорее всего я что-то не понимаю,но в функции одинаково к разным типам у меня обратиться не выходит.

Gleb-Maksimov Автор вопроса
Gleb Maksimov
Про наименование усвоил,спасибо

Просто почитайте как устроены массивы и указатели в с++

Gleb Maksimov
Ну мне как в учебном учреждении сказали,так я это ...

У тебя всё в голове перемешалось наверно. Динамическая - это как раз выделенная в куче, а какая она по структуре - дело совсем другое

выглядит как херовый код просто - скинь больше кода

Gleb Maksimov
Да,спасибо.Но это если не в функции.Если де работа...

Передавай массивы по ссылке в функции, и будет всё пофиг

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта