LINUX.ORG.RU

Смещение указателя по массиву интов

 


0

1
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
void *pointer = &a;

for(int i=0; i<10; i++)
	std::cout << *((int *)pointer + i) << std::endl;

Есть такой код, который пробегается по массиву интов через указатель типа void. Код работает.

Вопрос такой - почему достаточно увеличивать pointer на 1, чтобы перейти к следующему элементу?

Старший товарищ предлагал увеличивать на i * sizeof(int) и это выглядит разумным, но не работает.



Последнее исправление: lvmuser (всего исправлений: 3)
Ответ на: удаленный комментарий

Мне кажется, это лучше от задачи выбирать какой язык использовать.

Здесь же, в представленном коде, вообще неясно, зачем нужна адресная арифметика. Для того, чтобы было?

Похоже, что выбирать под задачу нужно уметь не только язык, но и средства внутри языка.

hibou ★★★★★
()
Ответ на: комментарий от peregrine

ага, принудительно))) зы тс про сишечку не знаю, не могу помочь, забыл напрочь

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от BackDoorLover

Старшего товарища. Но его надо не на позицию разраба брать, а для того чтобы Владимиру легче было, стресс там спускать.

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.