Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка. Вот код: Код cpp: Код: plaintext 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 18:16 |
|
||
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
kuritelОчевидно, что где-то вкралась ошибка. Ошибка вкралась уже в начальных рассуждениях. В С нет двумерных массивов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 18:39 |
|
||
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
Интересно, что употреблял автор, когда придумал синтаксис: int arr[size1[size2.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 19:03 |
|
||
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
kuritelКак я знаю, имя массива и указателя тождественны в С++. Это неправда, они НЕ тождественны. kuritelИз этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... А в этом ты прав. Можно. kuritel Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка. Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =) Как уже сказали, в С и С++ нет двумерных (многомерных) массивов. Далее, многомерные массивы можно имитировать четырьмя способами (может есть и больше): хранить одномерный массив NxM и перевычислять адреса по двум координатам. В С++ можно обернуть это в класс. хранить массив массивов хранить массив указателей на массивы (как правило, динамически выделенные) (только С++) имитировать многомерные массивы вложенными векторами (вектор вектора, вектор вектора вектора и т.д.) Далее всё зависит от того, какой из способов ты выберишь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 19:34 |
|
||
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
авторЯ пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Передавать в функции массивы нельзя. Можно передавать либо указатели либо ссылки на одни из тех структур, что я уже выше перечислил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 19:36 |
|
||
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
kuritel Как я знаю, имя массива и указателя тождественны в С++. Как вам уже сказал MasterZiv, это не так. Указатель это переменная содержащая адрес другой переменной. Именем массива является указательное выражение, константа, а не переменная. Потому, любые операция реинициализации по отношению к имени массива будут незаконны. kuritel Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... Мне кажется, что вы написали не то, что хотели сказать. Что значит инициализировать указатель ? Это значит записать в указатель значение (предполагается что вы объявили указатель ранее, а сейчас просто записали в него значение, p=&b, например). А теперь вы собираетесь работать с ним как с именем массива .( Про эту фразу я написал ниже. Допустим сейчас, что эту фразу можно применить.) Для начала вам нужно выделить память, а уже потом работать с этой памятью. (После инициализации указателя у вас есть только одна ячейка памяти, если только вы не инициализировали указатель адресом начала массива(или адресом внутри выделенной области памяти)) Но я думаю, что вы имели другое, и я бы так ответил на ваш вопрос. Т.к. ваше первое утверждение неверно, то и это соответственно не до конца верно(как минимум). С большое долей вероятности, сначала появились указатели, а потом уже появились такие типы данных как массивы. Потому, я бы сказал, что операции связанные с адресацией в массиве используют арифметику указателей. kuritel Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка. Вот код: Ваш код поврежден ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 02:18 |
|
||
|
Передача двумерного массива в функцию
|
|||
|---|---|---|---|
|
#18+
SashaMercury, код был повреждён из-за неверного форматирования. Почему код безвозвратно при этом теряется -- другой вопрос, но главное, что его не восстановить. Если kuritel зашлёт ещё раз код открытым текстом или с правильным форматированием, я вставлю его в нужное место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 10:44 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2019302]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 160ms |

| 0 / 0 |
