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

Какой способ лучше для передачи двухмерного массива в функцию? Я

не замечал что есть разница передачи динамического и статического массива 😁. С первым можно так func(int **arr, int r, int c), а со вторым так не получится.

32 ответов

83 просмотра

можно сделать чтото около структуры: https://godbolt.org/z/rhYWxT3ro хз слишком тупо

007- Автор вопроса
007
Эта идея звучит интересней

А если переставить местами поля структуры, то можно размер(ы) хранить как метадату до указателя на массив.

Передавать одномерный если не нужна переменная длина

Вы используете слова "динамический" и "статический" в каком-то своём особенно смысле? От способы выделения не должна меняться логика работы с ним. Если у вас они работают по разному, вы что-то делаете не так, и отличие не в динамичности.

²
можно сделать чтото около структуры: https://godbo...

это же не 2д массив. это просто два массива рядом. под 2д массивом понимают N*M а не N*2

007- Автор вопроса
007- Автор вопроса

Где ты тут видишь что я передаю одномерный массив?

007
Где ты тут видишь что я передаю одномерный массив?

Отвечу под этим. В си насколькоя помню, квадратные скобки типизирую переменную. То есть вот это blyat2[4][4] это отдельный тип, который имет сигнатуру blyat2[4][*]

𝕐𝕒𝕪𝕒 🐺
Отвечу под этим. В си насколькоя помню, квадратны...

blyat[4][4] - это указатель на массив указателей на массивы размера 4, который сам размера 4

Chapmann Chapmann
blyat[4][4] - это указатель на массив указателей н...

Неа, там работает адресная арифметика. 4*k+l

Chapmann Chapmann
почему диз

это не указатель на указатель

Стикер

007- Автор вопроса

Ты передашь int arr[4][4] в void func(int **arr)?

007
Ты передашь int arr[4][4] в void func(int **arr)?

нет, я передам статический массив в void func(int **arr)

что дело не в динамический или статический массив а в том что это разные структуры данных

причём тут декомпозиция. разница только в динамика vs статика

007- Автор вопроса
²
можно сделать чтото около структуры: https://godbo...

Пока что самый лучший ответ который я получил

007
Пока что самый лучший ответ который я получил

жаль что в нём нет двумерного массива

007
Пока что самый лучший ответ который я получил

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

007- Автор вопроса

Тут сказано что "с func(int **arr, int r, int c) не получится использовать статический массив". Нет?

007- Автор вопроса
007
Да но в определенной степени

это true/false выражение. тут нет степеней.

007- Автор вопроса
007- Автор вопроса
Алексей (lewa_j) Иванчуков
Тут сказано что "с func(int **arr, int r, int c) н...

Тут идёт речь о непосредственной передаче самого массива в функцию

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
12
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
Карта сайта