Что такое указатели в си?
Как задать указатель в си?
Зачем нужны указатели в си?
Указатели в C на примерах
Указатель – это переменная, значением которой является адрес другой переменной.
Простой пример указателя:
Получаем:
В этом примере суть основное, что надо знать про указатели в языке Си. Сначала объявлена переменная val;
Далее объявляем указатель на тип int с помощью оператора *:
Принято название указателя начинать с «p», ведь указатель по-английски pointer.
С помощью оператора & получаем адрес переменной val и присваиваем этот адрес указателю. Указатель – это переменная для хранения адреса другой переменной:
Далее выполняем разыменование с помощью оператора *:
Выражение *pVal — это переменная, на которую указывает наш указатель pVal, а он указывает на val. *pVal – это новое обозначение исходной переменной val. Выражение
равно выражению
Итак, указатель хранит адрес переменной, а разыменованный указатель есть просто новое обозначение переменной, на которую указывает указатель.
Ещё раз:
int *pVal; // Объявляем указатель на тип int;
pVal = &val; // Сохраняем адрес переменной val в указателе pVal;
// Теперь разыменование *pVal; это *pVal — просто новое обозначение переменной val.
*pVal = 123; // Присваиваем переменной val значение 123;
//Теперь val содержит 123. Вместо *pVal = 123; можно было написать val = 123; с тем же успехом.
Обратите внимание, что оператор * используется для объявления указателей и для разыменования. Оператор & используется для получения адреса переменной. Операторы * и & являются обратными. Пример:
даёт