0024 - Программирование на языке Си - Память нужно освободить только по окончании ее испол

Подбельский В.В., Фомин С.С. Программирование на языке Си. 2004

 Подбельский В.В., Фомин С.С. 
.  Программирование на языке Си 
. 2004
. 300 dpi (b/w)
. Финансы и статистика
. 
. Пособие (2-е издание) состоит из трех разделов. Первый раздел - это полный курс программирования на стандартном языке Си. Рассматриваются вс
Название: 
Программирование на языке Си
Автор: 
Подбельский В.В., Фомин С.С.
Год: 
2004
Издательство: 
Финансы и статистика
Описание: 

Пособие (2-е издание) состоит из трех разделов. Первый раздел - это полный курс программирования на стандартном языке Си. Рассматриваются все средства языка Си, не зависящие от реализаций, существующие в компиляторах на ПЭВМ, рабочих станциях и мощных сетевых серверах. Второй раздел посвящен выполнению программ в разных операционных системах. Третий раздел - это практикум по языку Си. По каждой теме практикума приведены методические рекомендации и варианты заданий для организации индивидуальной работы в учебной группе или классе. Для студентов и преподавателей вузов, а также для желающих освоить самостоятельно программирование на языке Си.

Память нужно освободить только по окончании ее использования. Проиллюстрируем второй вариант, когда объект динамической памяти связан со статическим внутренним . В следующей программе указатель на динамический участок памяти глобальный объект. Там же он явным присваиванием получает начальное значение . За счет глобальности указателя динамический объект доступен в обоих функциях . При выполнении цикла в функции . Приводить пример для случая, когда указатель, адресующий динамически выделенный участок памяти, является объектом автоматической памяти, нет необходимости. Заканчивая обсуждение этой темы, отметим, что динамическая память после выделения доступна везде . Следует только четко определить понятие внешнего объекта, к чему мы сейчас и перейдем, ч Глава . Здесь в конце главы, посвященной функциям, самое подходящее время, чтобы взглянуть в целом на программу, состоящую из набора функций, размещенных в нескольких текстовых файлах. Именно такой вид обычно имеет более или менее серьезная программа на языке Си. Отдельный файл с текстами программы иногда называют программным модулем, но нет строгих терминологических соглашений относительно модулей или файлов с текстами программы. Программа, как мы уже неоднократно говорили, представляет собой совокупность функций. Все функции внешние, так как внутри функции по правилам языка Си нельзя определить другую функцию. У всех функций, даже размещенных в разных файлах, должны быть различные имена. Одинаковые имена функций должны относиться к одной и той же функции. Кроме функций, в программе могут использоваться внеш. Внешние объекты должны быть определены вне текста функций. Внешние объекты могут быть доступны из многих функций программы, однако эта доступность не всегда реализуется автоматически в ряде случаев нужно дополнительное вмешательство программиста. Если объект определен в начале файла с программой, то он является глобальным для всех функций, размещенных в файле, и доступен в них без всяких дополнительных предписаний. Схема программы, размещенной в двух файлах Если необходимо, чтобы внешний объект был доступен для функций из другого файла или функций, размещенных выше определения объекта, то он должен быть перед обращением дополнительно описан с использованием дополнительного ключевого слова . не требуется в их прототипах. Однако это описание может быть размещено в теле одной функции, тогда объект доступен именно. Описание внешнего объекта не есть его определение. Под средой понимается та программа . Назначение параметров функции . Если внутри функции . При запуске программы из операционной системы командная строка явно доступна, и именно в ней записывается имя выполняемой программы. Вслед за именем можно разместить нужное количество . Здесь нужно сделать одно уточнение. Как и в каждом массиве, в массиве . Этот элемент является указателем на полное название запускаемой программы. Например, если из командной строки выполняется обращение к программе . Его назначение передать в программу всю информацию об окружении, в котором выполняется программа. Следующий пример иллюстрирует возможности этого третьего параметра основной функции . Чаще всего каждая строка содержит такую информацию. Для работы со строками окружения в программах на языке Си используют функции . Структурные типы и структуры Производные типы. Указатели, массивы, структуры и объединения являются производными типами данных. Иногда в качестве производного типа в руководствах по языку Си указывают строки, однако напоминаем, что в соответствии с синтаксисом языка строковый тип в нем отсутствует. Строка определяется как частный случай одномерного массива, т. как массив с элементами типа . Указатели и массивы подробно рассмотрены в предыдущих главах. Эта глава посвящена структурам и объединениям. Прежде чем рассматривать их особенности и возможности, введем некоторые терминологические соглашения стандарта, которые не всегда понятны сами собой. Данные базовых типов . Массивы и структуры являются агрегирующими типами данных в отличие от объединений и скалярных данных, которые относятся к неагрегирующим типам. С массивами и скалярными данными мы уже хорошо знакомы, поэтому различие между агрегирующими и неагрегирующими типами поясним на примере массивов и скалярных данных базовых типов. Обычно агрегирующий тип включает несколько компонентов. Язык Си позволяет определять и одноэлементные массивы. Однако одноэлементные массивы есть слишком частный случай обыкновенных массивов со многими элементами. Итак, в общем случае массив есть агрегирующий тип данных, состоящий из набора однотипных элементов, раз. Для агрегирующего типа данных . Этим свойством массивов мы уже неоднократно пользовались. Например, следующее выражение позволяет вычислить количество элементов массива В. С тем, как это происходит для скалярных типов, мы уже хорошо знакомы. С особенностями выделения памяти для объединений познакомимся в этой главе. Начнем с понятия структуры. Структура это объединенное в единое целое множество поименованных элементов . В отличие от массива, всегда состоящего из однотипных элементов, компоненты структуры. Например, может быть введена структура, описывающая товары на складе, с компонентами. В перечислении элементов структуры . В соответствии со смыслом компоненты могут иметь любой из типов данных, допустимых в языке. Так как товаров на складе может быть много, для определения отдельных структур, содержащих сведения о конкретных товарах, программист вводит производный тип, называемый структурным. Для нашего примера его можно ввести, например, так. Структуры и объединения . элементов, которые будут входить в каждый объект типа . Итак, формат определения структурного типа таков. Следует обратить внимание, что определение структурного типа . О безымянном структурном типе речь пойдет в этом параграфе чуть позже при определении структур как объектов. Не полностью определенный, т. незавершенный структурный тип, потребуется в следующем параграфе при рассмотрении указателей на структуры, вводимые в качестве элементов структур.