5 4 2 1 3 // порядок интерпретации описания
Операции с указателями
C указателями можно выполнять следующие операции: разадресация, или косвенное обращение к объекту (*), присваивание, сложение с константой, вычита ние, инкремент (++), декремент (—), сравнение, приведение типов. При работе с указателями часто используется операция получения адреса (&).
Операция разадрееации, или разыменования, предназначена для доступа к ве личине, адрес которой хранится в указателе. Эту операцию можно использовать как для получения, так и для изменения значения величины (если она не объяв лена как константа):
char
|
а:
|
//
|
переменная типа char
|
char
|
* р = new char:
|
/ *
|
выделение памяти под указатель и под динамическую
|
|
|
переменную типа
|
char */
|
*р =
|
'Ю': а = *р:
|
//
|
присваивание
|
значения обеим переменным
|
Как видно из примера, конструкцию *имя_указателя можно использовать в левой части оператора присваивания, так как она является L-значением (см. с. 33), то есть определяет адрес области памяти. Для простоты эту конструкцию можно считать именем переменной, на которую ссылается указатель. С ней допустимы все действия, определенные для величин соответствующего типа (если указатель инициализирован). На одну и ту же область памяти может ссылаться несколько указателей различного типа. Примененная к ним операция разадресации даст разные результаты. Например, программа
#1nclude
1nt main(){
Достарыңызбен бөлісу: |