ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 июля
1212760
symbions (31.05.2022 12:36, просмотров: 2324) m16
К знатакам С - не понятное встретил 

Встретил вот такую запись sizeof snoop_privil * (q_infor->snp_table_size + 1) как аргумент, что задаёт размер ячейки массива, что передаётся в функцию. И у меня ощёщение, что тут написан бред - беда, что пока нет описания структуры q_infor.

sizeof определяет размер, но вот чего?

Начинаю анализ, как написано - со скобок.

q_infor->snp_table_size - по названию это должно быть число, размер таблицы. Увеличиваем его на 1. И преобразуем это число в указатель на тип snoop_privil. Но бред же - достаточно было бы написать sizeof snoop_privil * - было бы тоже самое.

Имеет какой-то смысл только в том случае, если q_infor->snp_table_size это адрес (из-за того, что применяется в sizeof, это возможно?). Тогда да, какой-то смысл есть, но всё равно не переносимо получается, так как этот адрес увеличваем на 1 (а что лежит за этим элементом мы не знаем), потом разименовываем и приводим к типу snoop_privil и узнаём размер.

Но и в этом случае - почему не написать просто sizeof snoop_privil ?