3 / 3 / 0
Регистрация: 08.03.2015
Сообщений: 18
|
|
1 | |
Как найти количество элементов массива, зная лишь адрес первого элемента и тип?03.05.2015, 13:53. Показов 1799. Ответов 10
Метки нет (Все метки)
Где-то в коде объявлен массив, кол-во элементов неизвестно, имеется ссылочная переменная на этот массив и все, назовем ее (А), как узнать кол-во элементов в массиве?
0
|
03.05.2015, 13:53 | |
Ответы с готовыми решениями:
10
Найти количество элементов массива, больших первого элемента массива Найти количество элементов массива после первого элемента, равного 15 Найти количество элементов массива до первого элемента равного 111 Найти сумму и количество элементов, расположенных до первого положительного элемента массива |
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
|
|
03.05.2015, 13:56 | 2 |
Никак.
0
|
3 / 3 / 0
Регистрация: 08.03.2015
Сообщений: 18
|
|
03.05.2015, 16:17 [ТС] | 4 |
Попробую задать иначе: есть ссылочная переменная содержащая адрес первого элемента массива (объявленного статически), тип данных массива соответственно можно узнать, ведь у нас есть ссылка на него, необходимо найти количество элементов массива
0
|
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
|
|
03.05.2015, 16:22 | 5 |
если массив char то последним элементом должен быть '\0' (если он не двумерный)
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.05.2015, 16:27 | 6 |
Сообщение было отмечено DrOffset как решение
Решение
никак.
если бы у вас была ссылка на сам массив - бес проблем. но у вас только адрес первого элемента. указатели такую информацию не хранят. если бы данные были бы расположены в динамической памяти, тогда можно было бы узнать размер используя нестандартные расширения компиляторов. но у вас обычный статический массив. так что - никак.
1
|
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
|
|||||||||||
03.05.2015, 16:30 | 7 | ||||||||||
Сообщение было отмечено DrOffset как решение
Решение
Если имеется ввиду, имя массива, то варианты такие:
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
03.05.2015, 16:32 | 8 | |||||
никому он ничего не должен.
это сильно зависит от способа использования. например, техника boost::optional<T> под капотом использует массив для аллокации объекта.
1
|
3 / 3 / 0
Регистрация: 08.03.2015
Сообщений: 18
|
|
04.05.2015, 00:59 [ТС] | 10 |
массив типа GLuint (из библиотеки GLUT) необходимо передать в функцию? и в функции определить кол-во его элементов, лично у меня(раздел для новичков) получается передать в функцию только ссылку на массив, поэтому такой вопрос), я понимаю то что можно передать независимо в функцию кол-во элементов sizeof(mas)/sizeof(GLuint) и много чего еще, НО меня интересуют именно возможности при передачи ссылки на массив.
Добавлено через 5 минут void XXX(GLuint* mas) Добавлено через 4 минуты Если я туплю то заранее прошу меня извинить, можно конечно сделать так void XXX(sizeof(mas)/sizeof(GLuint)), но это очевидно, а меня интересует все таки void XXX(GLuint* mas)
0
|
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
|
||||||
04.05.2015, 01:07 | 11 | |||||
Не путай понятия.Передача ссылки на массив это вот такое:
Добавлено через 3 минуты Сделай функцию шаблонной (пример в 7 посте), передавай туда имя массива, размер там автоматически определяется (если только массив статически создан). Добавлено через 2 минуты Насчёт передачи просто указателя, уже написали выше.
1
|
04.05.2015, 01:07 | |