Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовые инфа.docx
Скачиваний:
179
Добавлен:
11.05.2015
Размер:
195.68 Кб
Скачать

49. Указатели языка Си.

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

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

Вначале указывается тип указателя. Это некоторый тип языка Си. В данном случае он определяет тип объекта, на который указывает указатель.

Вслед за этим через пробел ставится звездочка - *. Она обозначает, что следующая за ней переменная является указателем. Получается довольно простая формула: тип *<простая переменная>. Например:  char *ch;     Простейшая операция над указателями - это операция амперсант «&», что означает "взять адрес". Существует еще одна операция над указателями. Она обозначается символом звездочка «*». Смысл этой операции таков: "значение, расположенное по указанному адресу". 

В языке Си можно описать не только указатель на переменную, но и указатель на указатель. Пример:

int num =5;

int *ptr = &num;

int **ptr_ptr = &ptr;

int ***ptr_ptr_ptr = &ptr;    50. Одномерные массивы языка Си.     Массив – расположенные вплотную друг за другом в памяти элементы одного и того же типа. Массив определяется именем массива и порядковым номером каждого своего элемента. Порядковый номер элемента называют индексом. Индекс в языке С всегда целое число. Основная форма объявления массива:  тип<имя массива>[размер1] [размер2]...[размер N];      Чаще всего используются одномерные массивы. Их форма описания такова:  тип<имя массива>[размер1];      Поясним, что такое тип. Тип - это базовый, то есть основной тип элементов массива.      Размер - это количество элементов одномерного массива.     В языке С нумерация элемен тов начинается с нуля. То есть минимальный неотрицательный индекс элемента есть число - ноль. Таким образом, всегда первый элемент массива - это элемент с нулевым номером. Предположим, что Вы объявили массив  int a[100];      Это означает, что массив содержит следующие элементы: a[0], a[1], a[2],..., и так далее, a[99]. Количество байт = <размер базового типа> * <количество элементов в массиве>.      Следует знать, что в языке С под массив всегда выделяется непрерывное место в оперативной памяти. Выход массива за свои определенные командой пределы в С не проверяется. То есть, если массив имеет 100 элементов и описан как a[100], то при обращении к элементу a[200] язык С не дает программе средств для контроля того факта, что имеется выход за пределы памяти, отведенной под массив. Программа на языке С не выдаст сообщение об ошибке. Такие возможности разработчиками не предусмотрены. Возможно потому, что в те времена особенно дефицитным ресурсом была память и ее экономили на сам транслятор и потому не уделяли такого внимания анализу ошибок программиста. Отметим, что можно определять массивы любого ранее рассмотренного типа: 

В массиве можно хранить множество однотипных объектов без необходимости введения отдельного имени переменной для каждого из них. Массив может быть одномерным или многомерным. Количество измерений и длина каждого из измерений определяет общую длину массива, которая ограничена лишь адресным пространством конкретного компьютера.

Индекс массива — это целочисленное выражение, значение которого может быть в диапазоне от 0 до значения, равного длине измерения, уменьшенной на 1.