![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
![]()
Хотел написать функцию, которая возвращает размер указанного массива в байтах, но столкнулся с такой проблемой: функция всегда выдает 8 байт.
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
Потому что надо читать книги. Вы берете sizeof от УКАЗАТЕЛЯ, а это не массив.
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
![]() Цитата:
Тобишь определить размер массива через функцию нельзя? Только в том месте, где его объявлял? |
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]() Цитата:
void sizeArray (short []array) Но сразу скажу, лично я слабо представляю, как это сработает, и сработает ли вообще ![]() хотя, даже в main - передается число параметров = размер массива отдельно. В целом, для С, вам нужен макрос, который дает размер. Последний раз редактировалось alexzk; 27.06.2017 в 16:45. |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
![]()
Конкретно при такой записи:
Код:
Код:
|
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]() Цитата:
Указатель - это не массив. то бишь Код:
Код:
Код:
Код:
Но в C придется вручную смотреть за совпадением размеров, т.е. в такую функцию в C можно передать массив любого размера, но вывод всё равно будет такой, как будто у нас массив из 10 элементов. Туда даже можно обычный указатель передать. В C++ же требуется строгое соответствие размеров, так что передать туда указатель на массив другого размера не получится. В C++ также можно для массивов использовать шаблоны: Код:
Код:
|
|
![]() |
![]() |
![]() |
#9 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]() Код:
void foo(int a[]); тоже самое, что и void foo(int *a); |
![]() |
![]() |
![]() |
#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 |