Руководство полного чайника по программированию на языке Си

ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ


Указатели несколько различно ведут себя СЛЕВА и СПРАВА от оператора присваивания. Нас интересует новая операция, применяемая только к указателям:

*pointer

СПРАВА от присваиваний и в формулах =================================== *pointer означает "взять значение переменной (лежащее в ящике), на которую указывает указатель, хранящийся в переменной pointer".

В нашем примере - это число 12.

То есть *pointer означает "пройти по стрелке и взять указываемое ею ЗНАЧЕНИЕ".

printf("%d\n", *pointer);

Печатает 12;

z = *pointer; /* равноценно z = 12; */ z = *pointer + 66; /* равноценно z = 12 + 66; */

Заставим теперь указатель указывать на другую переменную (иначе говоря, "присвоим указателю адрес другой переменной")

pointer = &var2;

________ /pointer/ _/_______/_ | | | &var2 | | | |_______|_| | |&var2 | V ________ / var2 / _/_______/_ | | | 43 | | | |_________|

После этого z = *pointer; означает z = 43;

Таким образом, конструкция

z = *pointer;

означает

z = *(&var2);

означает

z = var2;

То есть * и & взаимно СТИРАЮТСЯ.



Содержание раздела