Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Оператор sizeof.)

Оператор sizeof.

В языке С существует специальная унарная операция sizeof, которая возвращает размер своего операнда в байтах. Операндом операции sizeof может быть любое выражение:

sizeof(Выражение);

Результат операции sizeof имеет тип int.

Получение размера объекта.

#include <iostream>
using namespace std;
void main ()
{
 int a;
 char b;
 unsigned c;
 int *p;
 /* ----------------------------- */
 cout<<"sizeof(a)="<<sizeof(a)<<"\n";
 cout<<"sizeof(b)="<<sizeof(b)<<"\n";
 cout<<"sizeof(c)="<<sizeof(c)<<"\n";
 cout<<"sizeof(p)="<<sizeof(p)<<"\n";
 cout<<"sizeof(int)="<<sizeof(int)<<"\n";
 cout<<"sizeof(int *)="<<sizeof(int *)<<"\n";
}
Результат работы программы:
sizeof(a)=4
sizeof(b)=1
sizeof(c)=4
sizeof(p)=4
sizeof(int)=4
sizeof(int *)=4
Размеры структуры.

Наверняка, вы предполагаете, что размер структуры равен сумме размеров ее членов. Это не так. Вследствие выравнивания объектов разной длины в структуре могут появляться безымянные "дыры". Так, например, если переменная типа char занимает один байт, а int - четыре байта, то для структуры:

#include <iostream>
using namespace std;
struct Test
{
 char c;
 int i;
};
void main ()
{
 Test d={'#',78};
 cout<<sizeof(Test)<<" "<<sizeof(d)<<"\n\n";
}

может потребоваться восемь байт, а не пять. Правильное значение возвращает операция sizeof.


Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 733 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]