Добавление типов указателей
Если один из операндов в операции сложения является указателем на массив объектов, другой должен иметь целочисленный тип. Результатом является указатель, имеющий тот же тип, что и исходный указатель, и указывающий на другой элемент массива. Эта концепция проиллюстрирована в следующем фрагменте кода.
short IntArray[10]; // Objects of type short occupy 2 bytes
short *pIntArray = IntArray;
for( int i = 0; i < 10; ++i )
{
*pIntArray = i;
cout << *pIntArray << "\n";
pIntArray = pIntArray + 1;
}
Несмотря на то что целочисленное значение 1 добавляется в pIntArray, это не означает "добавить 1 к адресу"; скорее, это означает "скорректировать указатель так, чтобы он указывал на следующий объект в массиве", то есть через 2 байта (или sizeof( int )).
Примечание
Код формы pIntArray = pIntArray + 1 редко можно найти в программах на C++; чтобы выполнить пошаговое увеличение, предпочтительно использовать следующие формы: pIntArray++ или pIntArray += 1.