Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As operações aditivas envolvendo um ponteiro e um inteiro fornecem resultados significativos somente se o operando de ponteiro se dirigir a um membro da matriz e o valor inteiro produzir um deslocamento dentro dos limites da mesma matriz. Quando o valor inteiro é convertido em um deslocamento de endereço, o compilador assume que apenas posições de memória do mesmo tamanho estão entre o endereço original e o endereço mais o deslocamento.
Essa suposição é válida para os membros da matriz. Por definição, uma matriz é uma série de valores do mesmo tipo; seus elementos residem em locais de memória contíguos. No entanto, não é garantido que o armazenamento para qualquer tipo, exceto elementos de matriz, seja preenchido pelo mesmo tipo de identificadores. Ou seja, espaços em branco podem aparecer entre posições de memória, mesmo posições do mesmo tipo. Portanto, os resultados de adicionar ou subtrair dos endereços de quaisquer valores, mas elementos de matriz são indefinidos.
Da mesma forma, quando dois valores de ponteiro são subtraídos, a conversão assume que apenas valores do mesmo tipo, sem espaços em branco, estão entre os endereços fornecidos pelos operandos.