КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
В языке Си указатели — это переменные, которые предназначены для хранения адресов объектов программы.Как все остальные переменные, указатели должны быть обязательно определены, т.е. им должны быть приписаны необходимые атрибуты. Указатели могут быть определены или объявлены на внешнем (глобальном)или внутреннем (локальном) уровнях и иметь любой из классов памяти. Важнейшую роль в описании указателя играет тип данных. Так как все указатели — это переменные, способные хранить всего навсего адрес только одного байта (первого из байтов, занимаемых объектом), то можно было бы предположить, что все указатели имеют один и тот же тип. Однако для выполнения разадресации компилятор должен знать тип объекта, на который ссылается указатель. Тип данных определяет размер объекта данных, способ представления (т.е. записи) данных в "ячейке"и набор допустимых операций с объектом. Зная только начальный адрес объекта и не зная его типа, компилятор не сможет правильно организовать обработку объекта. Поэтому все указатели принадлежат к одному из типов, название которых образуется словосочетанием "указатель на <тип_данных>". Здесь <тип_данных> — это любой базовый или производный тип. Например, определение int *px; вводит в программу объект px, имеющий тип "указатель на int". Так как тип, на который ссылается указатель, играет роль только на стадии компиляции (compile-time) при интерпретации указателя, то он никак не связан со способом размещения в памяти адресов объектов. Т.е. тип указываемых данных запоминается компилятором отдельно. Он является внешним по отношению к значению адреса свойством. Поэтому все указатели имеют один и тот же размер. Реальный размер указателя в байтах зависит от используемого для хранения объектов адресного пространства. В 16-разрядных приложениях для операционной системы MS-DOS размер адресного пространства для хранения данных и кода определяется специальным параметром компилятора — моделью памяти. Модель памяти устанавливается в пункте меню Options | Compiler | Code Generation... Например, в модели памяти Small для данных используются двухбайтовые адреса, а в модели Large — четырехбайтовые. Замечание После изменения используемой модели памяти для получения эффекта, программу надо заново откомпилировать. ЗАДАНИЕ 2 Составить программу, которая позволяет вычислить и вывести на экран размеры типов и размеры указателей на объекты (строка на каждый тип). Операции выполнить для шести базовых типов
|