size_t це беззнаковий цілочисельний тип даних, який визначено в різних файлах заголовків, наприклад:
, , , , ,>
Це тип, який використовується для представлення розміру об’єктів у байтах і тому використовується як тип повернення sizeof оператор . Він гарантовано буде достатньо великим, щоб вмістити розмір найбільшого об’єкта, який може обробляти хост-система. В основному максимально допустимий розмір залежить від компілятора; якщо компілятор 32-розрядний, то це просто typedef (тобто псевдонім) для unsigned int але якщо компілятор 64-розрядний, то це буде typedef для без знака довгий довгий . The size_t тип даних ніколи не буває негативним.
Тому багато бібліотек C функціонують як malloc, memcpy і strlen оголосити їхні аргументи та тип повернення як size_t . Наприклад,
C
java catch спроба
// Declaration of various standard library functions.> // Here argument of 'n' refers to maximum blocks that can be> // allocated which is guaranteed to be non-negative.> void>*>malloc>(>size_t> n);> // While copying 'n' bytes from 's2' to 's1'> // n must be non-negative integer.> void>*>memcpy>(>void>* s1,>void> const>* s2,>size_t> n);> // strlen() uses size_t because the length of any string> // will always be at least 0.> size_t> strlen>(>char> const>* s);> |
>
>
size_t або будь-який беззнаковий тип може використовуватися як змінна циклу, оскільки змінні циклу зазвичай більше або дорівнюють 0.
Примітка: Коли ми використовуємо a size_t об’єкт, ми маємо переконатися, що в усіх контекстах, у яких він використовується, включно з арифметикою, нам потрібні лише невід’ємні значення. Наприклад, наступна програма точно дасть несподіваний результат:
Приклад 1
C
// C program to demonstrate that size_t or> // any unsigned int type should be used> // carefully when used in a loop.> #include> #define N 10> int> main()> {> >int> a[N];> >// This is fine.> >for> (>size_t> n = 0; n a[n] = n; } // But reverse cycles are tricky for unsigned // types as they can lead to infinite loops. for (size_t n = N - 1; n>= 0; --n) printf('%d ', a[n]); }> |
кнопка для центрування css
>
>
Output Infinite loop and then segmentation fault>
Приклад 2
- Тип даних size_t у C — це беззнаковий цілий тип, який використовується для представлення розміру об’єктів у байтах. Він визначений у заголовку stddef.h і зазвичай використовується для представлення розміру масивів, блоків пам’яті та рядків.
- Ось приклад програми, яка демонструє використання size_t:
C
#include> #include> int> main()> {> >int> array[5] = { 1, 2, 3, 4, 5 };> >size_t> size =>sizeof>(array);> >printf>(>'The size of the array is: %lu
'>, size);> >return> 0;> }> |
>
найкрасивіша усмішка в світі
>
- у цій програмі size_t використовується для збереження розміру масиву в байтах.
- Оператор sizeof використовується для визначення розміру масиву, який потім зберігається в змінній size типу size_t. Специфікатор формату %lu використовується для друку значення size_t, яке є довгим цілим числом без знака.
- Програма виводить Розмір масиву: 20, що є кількістю байтів, які займає масив (5 елементів * 4 байти на елемент).
Переваги використання size_t у програмуванні на C:
- Портативність : Тип даних size_t визначено в заголовку stddef.h, який є частиною стандартної бібліотеки C. Використовуючи size_t, ви можете переконатися, що ваш код переноситься на різні платформи та компілятори.
- Без підпису : size_t є беззнаковим цілим типом, що означає, що він може представляти розміри до максимального розміру беззнакових цілих чисел. Це корисно при роботі з масивами та блоками пам’яті, оскільки розміри ніколи не можуть бути від’ємними.
- Продуктивність : size_t зазвичай реалізується як швидкий і ефективний цілочисельний тип, і його використання може призвести до кращої продуктивності, ніж використання інших цілочисельних типів.
- Чіткий намір: Використання size_t дає зрозуміти читачеві вашого коду, що ви маєте справу з розмірами, а не з іншими типами цілих чисел. Це робить код легшим для розуміння та менш схильним до помилок.
- Стандартизація : Використовуючи size_t, ви дотримуєтеся загальноприйнятого стандарту, який робить ваш код більш читабельним і зручним для інших програмістів.
- сумісність : size_t широко використовується в багатьох бібліотеках і API, і його використання у вашому коді дозволяє легше інтегрувати його з іншим кодом.