Операція sizeof. Операція ? :

Операція sizeof. Операція ?:


Зміст


1. Яке призначення у програмі на C++ має операція sizeof?

Операція sizeof призначена для визначення розміру типу даних, змінної базового типу, змінної структурного типу, числового значення, рядкового значення тощо.

Операція sizeof є корисною, коли необхідно динамічно виділяти пам‘ять для змінних. У цьому випадку потрібно знати об‘єм пам‘яті, що займає об‘єкт того чи іншого типу.

Загальний вигляд операції sizeof:

sizeof(тип_або_змінна)

де

  • тип_або_змінна – назва типу даних або змінної (об‘єкту), що використовується на даний момент в програмі.

2. Приклади використання операції sizeof для базових типів та числових значень

У наведеному нижче фрагменті коду наведено приклад визначення розміру змінної базового типу, числового значення, рядкового значення або результату виразу.

// операція sizeof
int a;
short int b;
float x;
double y;
long double z;
int size;

size = sizeof(b); // size = 2
size = sizeof(int); // size = 4
size = sizeof(a); // size = 4
size = sizeof(x); // size = 4
size = sizeof(double); // size = 8
size = sizeof(z); // size = 8
size = sizeof(long double);
size = sizeof(bool); // size = 1
size = sizeof(true); // size = 1
size = sizeof(28); // size = 4 - як тип int
size = sizeof(9.8 + 5); // size = 8 - як тип double
size = sizeof("Hello world!"); // size = 13
size = sizeof('\n'); // size = 1

3. Як визначити розмір структурної змінної? Приклад

Нехай задано структурну змінну, що описує дані про студента. Шаблон структури описується в окремому файлі “MyStruct_Student.h”:

struct Student
{
    char name[70];
    int age;
    char address[100];
};

Тоді, щоб визначити об‘єм пам‘яті, що виділяється для змінної типу struct Student, можна написати такий програмний код:

#include "MyStruct_Student.h"

...

// визначення розміру структурної змінної
int size;
Student ST;

size = sizeof(struct Student); // size = 176
size = sizeof(ST); // size = 176

...

4. Як визначити розмір масиву чисел? Приклад
// визначення розміру масиву
int A[100]; // масив зі 100 цілих чисел
float X[200]; // масив з 200 дійсних чисел
int size;

size = sizeof(A); // size = 4 * 100 = 400
size = sizeof(X); // size = 4 * 200 = 800



5. Як визначити розмір масиву структур? Приклад

Нехай задано структурну змінну, що описує дані про студента. Шаблон структури описується в окремому файлі “MyStruct_Student.h”:

struct Student
{
    char name[70];
    int age;
    char address[100];
};

Програмний код, що визначає розмір масиву зі 100 структурних змінних типу Student, буде мати такий вигляд:

#include "MyStruct_Student.h"

...

// визначення розміру масиву структур
Student A[100]; // масив зі 100 структур типу Student
int size;
size = sizeof(A); // size = 176 * 100 = 17600

6. Як визначити розмір об‘єкту (екземпляру) класу? Приклад

Нехай в модулі “MyClass.h” описується клас з іменем MyPoint:

class MyPoint
{
    private: int x, y;

    public:
        int GetX(void)
        {
            return x;
        }

        int GetY(void)
        {
            return y;
        }

        void SetXY(int nx, int ny)
        {
            x = nx;
            y = ny;
            return;
        }
};

Щоб визначити розмір пам‘яті, що виділяється для об‘єкту цього класу потрібно написати такий програмний код:

#include "MyClass.h"

...

// розмір об'єкту класу
MyPoint P1;
int size;

size = sizeof(P1); // size = 8
size = sizeof(MyPoint); // size = 8

...

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

7. Як визначити розмір масиву об‘єктів класу? Приклад

Нехай в модулі “MyClass.h” описується клас з іменем MyPoint:

class MyPoint
{
    private: int x, y;

    public:
        int GetX(void)
        {
            return x;
        }

        int GetY(void)
        {
            return y;
        }

        void SetXY(int nx, int ny)
        {
            x = nx;
            y = ny;
            return;
        }
};

Тоді, фрагмент програмного коду, що визначає розмір масиву з 20 об’єктів класу MyPoint, буде мати вигляд:

#include "MyClass.h"

...

// розмір масиву об'єктів класу
MyPoint P1[20];
int size;
size = sizeof(P1); // size = 8 * 20 = 160

...

8. Який загальний вигляд має у програмі тернарна операція ? : ?

Тернарна операція ? : може замінювати оператор умовного переходу if … else. Загальний вигляд операції ? : наступний:

вираз1 ? вираз2 : вираз3

де

  • вираз1 – будь-який логічний вираз, результатом якого є значення true або false;
  • вираз2 – вираз, що буде обчислений, якщо значення вираз1 = true;
  • вираз3 – вираз, що буде обчислений, якщо значення вираз1 = false.

9. Приклади використання операції ? :

У нижченаведеному фрагменті коду обчислюється мінімальне значення між двома змінними a та b:

// операція ? :
// мінімальне значення між двома числами
int a, b;
int min;

a = 15;
b = 8;
min = a > b ? b : a; // min = 8


Зв’язані теми