Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Размер указателя и указываемого объекта




Для изучения свойств указателей необходимо применять специфические для языка Си операции — вычисления размера и приведения типа.

Операция вычисления размера sizeof

Операция sizeof возвращает р а з м е р своего операнда в байтах.

Результат применения оперцаии имеет специальный и определенный параллельно в нескольких заголовочных файлах (например, в stdio.h) тип size_t. В пакете BC 3.1 это синоним типа unsigned int (каким в этом случае может быть максимальный размер "измеряемого" операцией объекта?).

Операция sizeof используется в двух ситуациях.

а) Во-первых, наряду с остальными операциями языка Си, sizeof может участвовать в образовании вычисляемых выражений. С этой точки зрения она обладает приоритетом и ассоциативностью остальных унарных операций (вспомните, какими конкретно?):

sizeof 2, sizeof x, sizeof (2*x+1)

б) Во-вторых, в отличие от других операций, она может быть применена не только к объектам данных, но и к типу данных. В этом случае операнд (имя типа) обязательно должен быть заключен в круглые скобки. Результатом выполнения операции является размер объектов данного типа (очевидно, одинаковый для всех объектов).

Операция применима к любым типам:

а) базовым типам — int, float и т.п.,

б) типам, производным от базовых, например, к типу int* ("указатель на int") или массиву;

в) к структурным типам, созданным программистом (тема будет изучаться позже).

ЗАДАНИЕ 1

1.float x=-8.92;

int y=5;

printf("sizeof x=%u\n", sizeof x);

printf("sizeof y=%u\n", sizeof y);

printf("sizeof x+y=%u\n", sizeof x+y);

printf("sizeof (x+y)=%u\n", sizeof (x+y));

printf("sizeof x*2+1=%u\n", sizeof x*2+1);

printf("sizeof 2*y+1=%u\n", sizeof 2*y+1);

printf("sizeof ++y*2=%u\n", sizeof ++y*2);

printf("sizeof y--*2=%u\n", sizeof y--*2);


В отчете результаты работы программы оформить в виде таблицы

 

Выражение Размер объекта в байтах Порядок вычисления
. . . . . . . . .

 

В последнем столбце требуется расставить скобки в соответствии с приоритетами операций.

Написать программу, которая в отдельных строках выводит информацию о размере каждого из базовых типов языка (char, short, int, long, float, double, long double).

В строке выводится название типа данных и его вычисленный размер.

Примечание

Так как размеры базовых типов Си стандартом языка строго нерегламентируются, то они зависят от реализации (т.е. от воли разработчика компилятора). Реальные размеры объектов часто нужны программисту при написании кода. Чтобы обеспечить использование программы на разных платформах, она должны быть универсальной и не привязанной к одному компилятору или платформе.

Применение операции sizeof позволяет вместо указания конкретных размеров объектов вставлять в программу выражения, вычисляющие эти размеры на этапе выполнения программы (run-time).

Размер указателя и указываемого объекта


Поделиться:

Дата добавления: 2015-09-15; просмотров: 135; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты