Конспект лекций по информатике и информационным технологиям
140 5. Как выполнить ввод переменных х н у , где х типа long int, а у типа double с помо щью функции scanf? С помощью операции » ? 12. Указатели и функции 12.1.Указатели Указатель - это переменная, значением которой является адрес. То есть это такая переменная, в которой можно сохранить адрес какой-то другой переменной. Если более точно, то указатель хранит адрес ячейки памяти, в которой содержится значение другой переменной. Так же как переменные различаются типами, указатели тоже бывают разными. Так при объявлении указателя обязательно задается, на переменную какого типа это указа тель. То есть, по сути - адрес переменной какого типа будет содержаться в этом указателе. Переменная, хранящая адрес, должна быть объявлена как указатель. Объявление указателя состоит из имени типа той переменной, адрес которой хранится в указателе, символа и имени указателя: тип *имя_указателя; Рассмотрим пример. Чтобы объявить переменную р указателем на переменную це лого типа необходимо использовать следующую инструкцию int *р; Для объявления указателя q на тип float необходимо написать float *q; В общем случае использование символа "звездочка" (*) перед именем переменной при ее объявлении превращает эту переменную в указатель. С указателями используются два оператора: "*" и "&". Оператор "&", стоящий перед именем переменной, возвращает адрес этой пере менной. Например, при выполнении следующего фрагмента кода int balance = 100; int *ptr; ptr = &balance в переменную ptr помещается адрес переменной balance. Этот адрес соответствует облас ти памяти компьютера, которая принадлежит переменной balance. Выполнение этой инст рукции никак не влияет на значение переменной balance. Назначение оператора "&" мож но выразить фразой "получить адрес переменной". Оператор "*" ставится непосредственно перед указателем. Он обозначает обраще ние к значению переменной, адрес которой содержит данный указатель. Если в продолже ние предыдущего фрагмента написать int value; value = *ptr; то переменной value будет присвоено значение переменной balance. Т.е. после выполне ния последнего оператора переменная value будет содержать значение 100. Действие опе ратора "*" можно выразить фразой "значение, расположенное по адресу". В данном случае последний оператор можно прочитать так: "переменная value получает значение, распо ложенное по адресу ptr". Переменные-указатели должны всегда указывать на данные соответствующего ти па. Несоблюдение этого условия может привести к ошибке. Например, следующий фраг мент кода некорректен int *р;
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy