All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
|||||||||||
1 | |||||||||||
Передача функции статического двумерного массива03.08.2013, 09:08. Показов 9656. Ответов 28
Метки нет Все метки)
(
Доброго времени суток, уважаемые жители Cyber-Forum. Не так давно я начал самостоятельно изучать Си++, и если честно, то ето вообще мой первый опыт в программировании, поэтому в процессе изучения накапливаются вопросы, на которые некому ответить. Мой вопрос уже задавался ранее неоднократно, так что он вряд ли покажется вам чем-то новым, но я спрошу, так как в прочитанных мноу темах я не смог удовлетворить своё любопытство.
Допустим, у нас есть статический двумерный массив
Как вы можете видеть, число строк и столбцов зависит от констант rowSize и columnSize.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
03.08.2013, 09:08 | |
Ответы с готовыми решениями:
28
Передача двумерного статического массива в функцию Передача двумерного статического массива в функцию Передача статического двумерного массива в функцию Передача статического двумерного массива, как параметра |
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
||||||
03.08.2013, 09:17 | 2 | |||||
Можно по ссылке передать:
1
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
||||||
03.08.2013, 09:33 [ТС] | 3 | |||||
А вызов будет выглядеть так?
У одномерного массива нужно было обязателно передавать его размер, почему же в случае с двумерным массивом ето правило не работает? Спасибо, что так быстро откликнулись)
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
|||||||||||
03.08.2013, 09:47 | 4 | ||||||||||
Да те же самые правила...
Массив по значению передать нельзя, либо в виде ссылки, либо в виде указателя (здесь надо отдельно передавать размер) Ссылка:
1
|
1778 / 756 / 153
Регистрация: 03.06.2009
Сообщений: 5,834
|
||||||
03.08.2013, 09:48 | 5 | |||||
1
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
|
03.08.2013, 10:04 [ТС] | 7 |
А почему число строк можно не указывать?
0
|
![]() 5826 / 3477 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
03.08.2013, 10:37 | 8 | |||||
Передавать сам массив по ссылке, а размеры массива сделать шаблонными параметрами:
1
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
||||||
05.08.2013, 19:20 [ТС] | 9 | |||||
Поправьте пожалуйста, если я в чём-то ошибаюсь.
Указатель - это ячейка в памяти, которая после инициализации хранит адрес другой ячейки в памяти, хранящей некоторое значение. После применения к указателю операции разыменования, мы фактически попадаем в ту ячейку, хранящую значение. Ссылка - это альтернативное имя для переменной, к которой привязана ссылка. Тогда имя массива - это указатель на первый элемент в массиве, который хранит адрес этого первого элемента. Допустим:
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
||||||
05.08.2013, 19:32 | 10 | |||||
Имя массива почти во всех контекстах неявно приводится к указателю на первый элемент.
Добавлено через 2 минуты Но не при sizeof, например:
1
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
||||||
05.08.2013, 20:20 [ТС] | 11 | |||||
gray_fox, большое Вам спасибо, что помогаете. Хочу всё таки уточнить разницу:
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
|||||||||||
05.08.2013, 20:26 | 12 | ||||||||||
StackOverflow, если имелось ввиду
Добавлено через 2 минуты Не по теме: P.S.: "внешний" const параметра ф-ии не влияет на её сигнатуру, т.е. можно так:
0
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
||||||
05.08.2013, 20:31 [ТС] | 13 | |||||
Ах, вот, кажется заметил наконец, в чём разница!) Если поставить квадратные скобочки, то это уже будет своего рода разыменованием, да? А если вот так:
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
||||||
05.08.2013, 20:33 | 14 | |||||
Ну вообще это тоже самое, что и
Т.е. тип первого аргумента - константный указатель.
1
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
|
05.08.2013, 20:38 [ТС] | 15 |
Значит, можно передать и указатель, если в прототипе скобочки [], а не звёздочка *, так ведь?
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
|||||||||||
05.08.2013, 20:44 | 16 | ||||||||||
Если в прототипе скобочки или звёздочка, в любом случае передаете указатель, только в случае
Ну, т.е. да, можно)
1
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
|
05.08.2013, 20:47 [ТС] | 17 |
gray_fox, большое Вам спасибо, Вы мне очень помогли!
P.S. Можно по какому-либо вопросу обращаться к Вам за помощью прямо в ЛС?
0
|
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
|
05.08.2013, 20:48 | 18 |
StackOverflow, лучше тему создавайте, разные люди подскажут...
0
|
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
|
||||||
06.08.2013, 13:54 [ТС] | 19 | |||||
А как можно было бы передать двумерный массив через конструктор класса или через set-функцию класса?
Допустим ли такой вариант:
0
|
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
06.08.2013, 14:03 | 20 |
StackOverflow, даже если бы можно было создать двумерный массив с размерами, заданными переменными (не константами), то в 7 строке - несовместимость типов.
1
|
06.08.2013, 14:03 | |
Помогаю со студенческими работами здесь
20
Передача двумерного статического/автоматического массива в функцию Передача двумерного массива в функции
Передача двумерного массива из функции в функцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |