Арифметика указателей и массив символов
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;