Adição de tipos de ponteiro
Se um dos operandos em uma operação de adição é um ponteiro para uma matriz de objetos, o outro deve ser do tipo integral. O resultado é um ponteiro que tem o mesmo tipo do ponteiro original e que aponta para outro elemento da matriz. O fragmento de código a seguir ilustra esse conceito:
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;
}
Embora o valor de integral 1 seja adicionado a pIntArray, isso não significa "adicionar 1 ao endereço"; significa "ajustar o ponteiro de modo a apontar para o próximo objeto na matriz" que esteja afastado por 2 bytes (ou sizeof( int )).
Dica
O código do formato pIntArray = pIntArray + 1 raramente é encontrado em programas C++; para executar um incremento, estes formatos são preferíveis: pIntArray++ ou pIntArray += 1.