logo

оператор sizeof у C

Sizeof це часто використовуваний оператор у C. Це унарний оператор під час компіляції, який можна використовувати для обчислення розмір його операнда . Результатом sizeof є беззнаковий інтегральний тип, який зазвичай позначається size_t. sizeof можна застосувати до будь-якого типу даних, включаючи примітивні типи, такі як цілі числа та типи з плаваючою комою, типи вказівників або складені типи даних, такі як Structure, union тощо.

Синтаксис:

 sizeof ( Expression );>

де ' експресія може бути типом даних або змінною будь-якого типу.



Повернення: Він повертає розмір розміру заданого виразу.

Часова складність: О(1)
Допоміжний простір: О(1)

Використання оператора sizeof().

sizeof() Оператор використовується різними способами залежно від типу операнда.

1. Якщо операнд є типом даних: Коли sizeof() використовується з такими типами даних, як int, float, char… тощо, він просто повертає обсяг пам’яті, виділеної для цих типів даних.

пункти sql

приклад:

C




// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu '>,>sizeof>(>char>));> >printf>(>'%lu '>,>sizeof>(>int>));> >printf>(>'%lu '>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }>

>

>

Вихід

1 4 4 8>

Примітка: sizeof() може давати різний результат залежно від машини, ми запустили нашу програму на 32-розрядному компіляторі gcc.

2. Коли операнд є виразом: Коли sizeof() використовується з виразом, він повертає розмір виразу.

приклад:

C




// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }>

>

>

Вихід

8>

Як ми знаємо з першого випадку, розмір int і double дорівнює 4 і 8 відповідно, a є змінною int, тоді як d є змінною double. Кінцевий результат буде подвійним, тому результат нашої програми становить 8 байт.

Тип оператора

sizeof() є оператором під час компіляції. Час компіляції означає час, коли вихідний код перетворюється на двійковий код. Він не виконує (запускає) код всередині ().

приклад:

C




спробуйте блок catch у java

// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }>

>

>

Вихід

4 11>

Якщо ми спробуємо збільшити значення x, воно залишиться незмінним. Це тому, що x збільшується в дужках, а sizeof() є оператором під час компіляції.

javac не розпізнається

Необхідність Sizeof

1. Щоб дізнатися кількість елементів у масиві: Sizeof можна використовувати для автоматичного розрахунку кількості елементів масиву.

приклад:

C




// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }>

>

>

Вихід

Number of elements:11>

2. Щоб динамічно виділити блок пам’яті: sizeof широко використовується в динамічному розподілі пам'яті. Наприклад, якщо ми хочемо виділити пам’ять, достатню для зберігання 10 цілих чисел, і ми не знаємо sizeof(int) у цій конкретній машині. Ми можемо виділити за допомогою sizeof.

Синтаксис:

int* ptr = (int*)malloc(10 * sizeof(int));>

Для отримання додаткової інформації зверніться до статті – Динамічно виділіть блок пам'яті .