189 похожих чатов

На хабре вышла статейка Спрашивают, чем отличаются методы. uint16_t calc_crc16_ccitt(uint8_t *inData, uint16_t

const len);
uint16_t calc_crc16_ccitt(uint8_t inData[], uint16_t const len);

Я чет такой синтаксис в С впервые вижу. Разве можно передать массив по значению, не указывая его размер явно?

10 ответов

11 просмотров

если правильно понимаю, то именно тут ничем не отличаются функционально. а вот если в структуре то будет отличаться

Во втором случае будет создан массив на стэке (в автоматической памяти). Соответственно, при выходе из функции память будет освобождена.

SetPf
Какого размера?

На момент выделения кадра стэка для функции размер массива будет известен.

в обоих случаях в функцию передается указатель на нулевой элемент массива, сам указатель передается по-значению. во втором случае указатель передается константный, в первом: обычный, т.е. его значение можно будет изменять в функции: вот и вся разница.

SetPf- Автор вопроса
Ponytale
в обоих случаях в функцию передается указатель на ...

Вот это уже яснее, спс. А как давно этот синтаксис?

SetPf
Вот это уже яснее, спс. А как давно этот синтаксис...

мне кажется, я знал это всегда... т.е. еще от K&R

Ponytale
в обоих случаях в функцию передается указатель на ...

На самом деле это тоже неверно. Вот что написано в K&R: Имеется одно различие между именем массива и указателем, которое необходимо иметь в виду. указатель является переменной, так что операции PA=A и PA++ имеют смысл. Но имя массива является константой, а не переменной: конструкции типа A=PA или A++,или P=&A будут незаконными. Когда имя массива передается функции, то на самом деле ей передается местоположение начала этого массива. Внутри вызванной функции такой аргумент является точно такой же переменной, как и любая другая, так что имя массива в качестве аргумента действительно является указателем, т.е. Переменной, содержащей адрес. https://godbolt.org/z/G6rhYo34c @setpoint_f

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
I just installed it but how do I use it?
Talula
12
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
я не про это. какая еще есть инфа, или может появиться, что ее можно обозначить названием данной игры? зачем плодить хештеги, которые обозначают одну сущность? в данном случ...
Aiwan \ (•◡•) / _bot
5
Карта сайта