Правильный стиль C

Правильный стиль C Reddit, Языки программирования, Винни-Пух, Скриншот, Программирование

IT-юмор

5.6K постов52.5K подписчика

Добавить пост

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Вы смотрите срез комментариев. Показать все
15
Автор поста оценил этот комментарий

Но это тоже не правильно, должно быть так:

int *a = calloc(10, sizeof(int));

раскрыть ветку (5)
5
Автор поста оценил этот комментарий

И чем же это будет более правильно?

1) int a[10] не будет инициализирован нулями. Чтобы он был инициализирован, нужно хотя бы написать int a[10] = {0}; (в с++ все сложнее, но тут вроде речь о С)

Ваш же calloc предоставит гарантированно обнуленную память

2) calloc, как и все средства выделения памяти в С, возвращает void*. Вы не можете просто так положить его в int*, нужен каст (ЕМНИП, некоторые компиляторы позволяют сделать это без каста, но это все равно неправильно)

3) Если вы намекаете на то, что у calloc'a есть явное указание количества элементов, как и у массива — ну, а на что оно влияет? Так или иначе размер указывается через sizeof, а не просто через количество элементов.

И размер выделенного массива у calloc и у malloc все равно будет одинаковый.


Кроме того, оба варианта неправильные, потому что при объявлении "int a[10]" тип переменной совсем не int*. Правильный тип переменной: int (*const)[10].


/zanuda_mode off

раскрыть ветку (3)
3
Автор поста оценил этот комментарий
#define calloc (int*)calloc
раскрыть ветку (2)
4
Автор поста оценил этот комментарий

фигассе живодёрство

Автор поста оценил этот комментарий

ипать тю Люсю... спасибо разрабам PHP что они не внедрили #define туда... и так хуйни много написать можно, так ещё и искать какой-то скрытый define в одном из include это ж жопа будет )

Автор поста оценил этот комментарий

Если память обнулять не нужно, что calloc(const..) не эффективно.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку