|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.06.2017, 16:28 | #1 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Sizeof array
Хотел написать функцию, которая возвращает размер указанного массива в байтах, но столкнулся с такой проблемой: функция всегда выдает 8 байт.
Код:
|
27.06.2017, 16:33 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Потому что надо читать книги. Вы берете sizeof от УКАЗАТЕЛЯ, а это не массив.
|
27.06.2017, 16:38 | #3 | |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Цитата:
Тобишь определить размер массива через функцию нельзя? Только в том месте, где его объявлял? |
|
27.06.2017, 16:42 | #4 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
void sizeArray (short []array) Но сразу скажу, лично я слабо представляю, как это сработает, и сработает ли вообще - попробуйте. хотя, даже в main - передается число параметров = размер массива отдельно. В целом, для С, вам нужен макрос, который дает размер. Последний раз редактировалось alexzk; 27.06.2017 в 16:45. |
|
27.06.2017, 16:49 | #5 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Конкретно при такой записи:
Код:
Код:
|
27.06.2017, 16:50 | #6 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Цитата:
Цитата:
|
||
27.06.2017, 17:17 | #7 | |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Цитата:
|
|
27.06.2017, 21:34 | #8 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
Указатель - это не массив. то бишь Код:
Код:
Код:
Код:
Но в C придется вручную смотреть за совпадением размеров, т.е. в такую функцию в C можно передать массив любого размера, но вывод всё равно будет такой, как будто у нас массив из 10 элементов. Туда даже можно обычный указатель передать. В C++ же требуется строгое соответствие размеров, так что передать туда указатель на массив другого размера не получится. В C++ также можно для массивов использовать шаблоны: Код:
Код:
|
|
28.06.2017, 06:30 | #9 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Код:
void foo(int a[]); тоже самое, что и void foo(int *a); |
28.06.2017, 11:17 | #10 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Спасибо, это лучший ответ!
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему не получается преобразовать тип к array[1..6] of string к array[1..6] of string? | юля123321 | Помощь студентам | 12 | 01.12.2016 15:21 |
Для чего существует коммутативность array[2] == 2[array] | _PROGRAMM_ | Помощь студентам | 10 | 02.11.2014 13:33 |
sizeof() или не sizeof()? | Madmaxisss | Visual C++ | 4 | 02.04.2012 21:26 |
SIZEOF? | GerNick | Общие вопросы C/C++ | 6 | 22.01.2011 17:59 |
sizeof , rand , адрес переменных. | Gradus | C++ Builder | 30 | 24.08.2010 23:12 |