Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Цели:
- закрепление изученного материала по массивам;
- приобретение навыков работы с указателями.
Характер занятия: репродуктивный.
Форма организации: индивидуальная.
Обеспечение занятия: тетрадь с лекциями, СИ, компьютер.
Требования к знаниям
Перед выполнением практической работы студент должен
знать:
- понятие указателя в языке С;
- способы применения указателей в языке С;
после выполнения практической работы студент должен
уметь:
- использовать указатели в тексте программ;
- применять указатели для передачи параметров в функции;
- использовать указатели для передачи параметра по ссылке.
Теоретический материал
Указатели представляют собой переменные, значениями которых являются адреса памяти. Указатель содержит адрес переменной, в которой находится конкретное значение (рис. 1).

Рис.1 Пример указателя
Указатели должны быть объявлены, прежде чем они будут использоваться:
int * countPtr, count;
объявляется переменная countPtr типа int * (указатель на целочисленное значение), что читается как «countPtr — указатель на целое» или «countPtr указывает на объект типа целое». Кроме того, объявляется переменная count целого типа. Символ * в объявлении распространяется только на countPtr. Этот символ означает, что объявляемая переменная является указателем. Можно объявлять указатели, ссылающиеся на объекты любого типа.
Указатели должны быть инициализированы либо при объявлении, либо при помощи оператора присваивания. Указатель может быть инициализирован нулем, макросом NULL или значением адреса. Указатель со значением NULL не указывает ни на что. Символическая константа NULL определяется в файле заголовка < stdio. h > (и в некоторых других заголовочных файлах). Инициализация указателя значением 0 эквивалентна инициализации указателя константой NULL, однако использование NULL предпочтительнее.
Операции над указателями
Операция взятия адреса & является унарной операцией, которая возвращает адрес своего операнда. Например, при объявлении переменных
int у = 5;
int * yPtr;
следующий оператор
yPtr = &у;
присвоит переменной-указателю yPtr адрес переменной у. После этого можно говорить, что переменная yPtr «указывает на» у. На рис. 2 схематически представлены значения переменных после выполнения приведенного оператора присваивания.

Рис. 2. Графическое представление указателя на переменную целого типа
На рис. 3 показано расположение переменных в памяти, в предположении, что целая переменная у находится по адресу 600000, а переменная-указатель yPtr — по адресу 500000. Операндом операции взятия адреса должна быть переменная; эта операция не может применяться к константам, выражениям или к переменным, объявленным с модификатором register.

Рис. 3. Размещение и содержимое у и yPtr в памяти
Операция *, обычно называемая операцией косвенной адресации или разыменования, возвращает значение объекта, на который операнд (то есть указатель) ссылается. Например, оператор
printf ("%d", *yPtr);
выводит значение переменной у, а именно число 5. Такое использование операции * называется разыменованием указателя.
В программе на рис. 4 показано выполнение операций над указателями. Спецификатор формата %р функции printf выводит содержимое элемента памяти как шестнадцатеричное целое число. Адрес переменной а и значение aPtr при выводе совпадают, из чего можно заключить, что адрес переменной а действительно присвоен переменной-указателю aPtr. Операции & и * взаимно дополняют друг друга, и когда они обе применяются последовательно к aPtr, то порядок их следования роли не играет — результат будет тем же. В таблице на рис. 5 показаны операции, их приоритет и ассоциативность.
/* Использование операций & и * */
# include < stdio. h >
main () {
int a; /* а - переменная целого типа */
int * aPtr; /* aPtr - указатель на целое */
а = 7;
aPtr = &а; /* Указателю aPtr присваивается адрес переменной а */
printf("The address of a is %p\n The value of aPtr is %p\n\n", &a, aPtr);
printf("The value of a is %d\n The value of *aPtr is %d\n\n", a, *aPtr);
printf("Proving that * and & are complements of each oter. \n&*aPtr = %p\n*&aPtr = %p\n",
&* aPtr, *& aPtr);
return 0; }
Вывод на экран
The address of a is FFF4 The value of aPtr is FFF4
The value of a is 7 The value of *aPtr is 7
Proving that * and & are complements of each oter. &*aPtr = FFF4! *SaPtr = FFF4
Рис. 4. Операции & и * над указателем
| Операции | Ассоциативность | Описание |
| 0 [ ] | слева направо | высший приоритет |
| ++ -- ! * & (тип) | справа налево | унарные |
| * / % | слева направо | мультипликативные |
| - + | слева направо | аддитивные |
| < <= > >= | слева направо | отношения |
| ==!=.- | слева направо | сравнения |
| && | слева направо | логическое И |
| || | слева направо | логическое ИЛИ |
| ?: | справа налево | условная |
| += -= /= %= | справа налево | присваивания |
| , | слева направо | запятая |
Рис. 5. Старшинство операций
|
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpedia.su 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!