c работа с массивами



Автор Максим Фролов задал вопрос в разделе Другие языки и технологии

Работа указателей с массивами в C++ и получил лучший ответ

Ответ от
int *ptri=0: ты создаёшь указатель, и присваиваешь ему 0, т. е. nullptr. А потом пытаешься разыменовать нулевой указатель.
Ещё проблема тут: *ptri++. У инкремента приоритет выше, чем у разыменования указателя. Т. е. это *(ptri++)
> Это та еще жесть
Это элементарщина.
> кто нибудь, помогите разобраться, потому что в инете и в книге годной инфы нет
Всё есть. Просто кто-то не любит разбираться.
> int* ptra=&a; это означает, что мы берем адрес из оперативки, где находится переменная а, и присваиваем этот адрес указателю
Верно.
> мы можем сделать для него указатель *ptra=a; то если нам надо вывести, скажем на экран элемент с индексом 4, то я должен написать cout<<*(ptra+4); Верно?
Достаточно просто cout << a[4];
> for(int *ptri=0;*ptri<*ptrn;*ptri++){
> cin>>ptra[*ptri];
К чему такие извраты?
Иван Гончарук
(420)
Он наверно имел ввиду использовать адресную арифметику, а не счетчики разыменовывать?
Пример:
const int n = 10;
int a[n];
for (auto e = a; e < a + n; ++e) {
std::cin >> *e;
}
for (auto e = a; e < a + n; ++e) {
std::cout << *e;
}

Ответ от Иван Гончарук[активный]
int n=10;
int* ptrn=&n;
int a[*ptrn];
Так делать нельзя! Размер массива должен быть константой времени компиляции, а вы используете значение переменной.
Про инициализацию счетчика в цикле уже сказали выше.
Я бы еще повозмущался про using namespace std; и про сырые указатели в C++, но кого это из преподов волнует, они C++ и C считают одним и тем же.
А вообще странные задания, бессмысленные и ничему не учат, только путают.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Работа указателей с массивами в C++
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*