26.01.2007, 15:16
общий
это ответ
Здравствуйте, Hunter20!
Указатель это переменная, которая содержит в себе адрес другой переменной. Несколько указателей могут указывать на один объект. Вот пример:
int *a; - объявляем пременную, которая содержит в себе адрес (указывает)некоторой переменной в памяти типа int.
стоит заметить, что после такого объявления a никуда конкретно указывает, т.е. BadPtr, и при попытке ее использовать вылезет ошибка. Если указатель это адрес, то логичен вопрос как получить какой-то адрес. Для этого служит оператор &. Пример: пусть есть переменная b:
int b = 4;
и есть указатель a:
int *a;
теперь присвоим a адресс b:
a = &b;
А теперь об использовании. Что бы обратиться к значению нужно использовать разименование. Деллается это добавлением *. Т.е. a - это адресс, *a - то что по этому адресу находиться.
int b = 4;
int *a = &b;
*a = 3;//Теперь хначение b равно 3.
Можно также выделить одну или несколько ячеек и взять адрес первой выделенной ячейки. Для это есть оператор new (стоит заметить, что он есть только в С++, в С его нету).
int *a = new int[3];//выделяем три ячейки типа int, оператор new возвращает адресс первой из них.
Далее важный момент это адресная арифметика. Пусть а - это указатель, тогда а + 1 это тоже адрес, но следующей ячейки. a++ здесь указатель сдвигается на одно значение. Важный момент: *(a + 2),это тоже самое, что и a[2], т.е. мы можем работать с группой выделенных ячеек как с массивом. После завершения работы с указателем его нужно удалить с помощью delete. Например так: delete a;