Операция sizeof. Операция ? :
Содержание
- 1. Какое назначение операции sizeof в программах на C++?
- 2. Примеры использования операции sizeof для базовых типов и числовых значений
- 3. Как определить размер структурной переменной? Пример
- 4. Как определить размер массива чисел? Пример
- 5. Как определить размер массива структур? Пример
- 6. Как определить размер объекта (экземпляра) класса? Пример
- 7. Как определить размер массива объектов класса? Пример
- 8. Какой общий вид в программе имеет тернарная операция ? : ?
- 9. Примеры использования операции ? :
- Связанные темы
Поиск на других ресурсах:
1. Какое назначение операции sizeof в программах на C++?
Операция 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
Связанные темы
- Оператор условного перехода if
- Оператор выбора switch
- Операторы инкремента (++) и декремента (— —). Составные операторы присваивания (+=, -= …)
- Таблица приоритетности операций