Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Еще раз об указателях

3.3K
19 декабря 2009 года
eugrita
24 / / 26.02.2006
Возможно вопрос примитивен.
При классическом способе работе внутри функции с массивом переданным по указателю
обход элементов массива делается так
p или *(p+i)
Почему оператор *p=*(p+1); выполненный i раз не эквивалентен *(p+i)?
29K
19 декабря 2009 года
Ander Skirnir
109 / / 08.06.2009
*p=*(p+1);

Если p - указатель, то *p - значение, хранящееся в ячейке памяти, которую адресует p. Так, по индукции, *(p+1) - значение, хранящееся в следующей за адресуемой указателем p ячейке памяти. Таким образом, выполнение i раз этого кода приведёт к многократному присвоению содержимого p+1`й ячейки памяти p`той, то есть, например, первому элементу массива i раз будет присвоено значение второго элемента.
34K
20 декабря 2009 года
muturgan
96 / / 01.10.2009
Цитата: eugrita
Почему оператор *p=*(p+1); выполненный i раз не эквивалентен *(p+i)?


Хороший вопрос :) Иногда бывает полезно оператор *p=*(p+1) i раз выполнить. Бывает хочется вместо этого написать *(p+i), но нельзя.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог