Форум программистов, компьютерный форум CyberForum.ru

Указатель вне корректного диапазона - C++

Восстановить пароль Регистрация
 
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
27.07.2013, 17:42     Указатель вне корректного диапазона #1
C++
1
2
3
4
5
6
7
void f(T a)
{
 T v[200];
 T p* = &v[0];
 p--;
 *p = a; // тут p вне корректного диапазона, почему? 
}
объясните этот момент плиз, я так понял, что когда мы дикрементируем указатель (p--), то т.к. указатель ссылался на начальный элемент массива типа T, то теперь он может ссылаться на другой тип, типа вышел из корректного lиапазона. Но почему не будет работать присваивание корректного адреса. Или типа указатель "испортился" когда сделали (p--)? А "починить" мы может только с помощь (p++). Но блин, почему так работает, в чем смысл, где логика?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2013, 17:42     Указатель вне корректного диапазона
Посмотрите здесь:

C++ Функция принимает указатель на void и возвращает указатель на int
Указатель или ссылка на указатель. В чем разница? C++
C++ Преобразовать указатель одного типа в указатель другого.
Приведение любого двумерного массива к типу указатель на указатель C++
Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
27.07.2013, 17:43     Указатель вне корректного диапазона #2
C++
1
T p* = &v[0];
это что?
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
27.07.2013, 17:51  [ТС]     Указатель вне корректного диапазона #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
T p* = &v[0];
это что?
опечатка, T* p конечно...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
27.07.2013, 18:03     Указатель вне корректного диапазона #4
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
опечатка, T* p конечно...
тогда после этого
C++
1
p--;
в p содержится адрес элемента v[-1] и поэтому
C++
1
*p = a; // тут p вне корректного диапазона, почему?
аналогично в данном случае
C++
1
v[-1]=a;
Yandex
Объявления
27.07.2013, 18:03     Указатель вне корректного диапазона
Ответ Создать тему
Опции темы

Текущее время: 03:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru