Арифметика указателей и массив символов

char arr[] = {'a', 'b', 'c'};
cout << &arr << endl;
cout << &arr + 1 << endl;

Почему адрес второго элемента находится на +3 байта? Разве не должно быть +1?


Ответы (1 шт):

Автор решения: Harry

Ну так что такое arr? массив из трех char.

Что такое &arr+1? Следующий за ним массив из трех char. Где он в памяти располагается? На расстоянии трех char, т.е. трех байт...

Чтоб на 1 байт сместиться, надо адрес символа рассматривать...

cout << (void*)(&arr[0] + 1) << endl;
→ Ссылка