Exemplo Prático: Inicialização de Array
Método Tradicional
for (contador = 0; contador < total; contador++) {
numeros[contador] = 1;
printf("%d ", numeros[contador]);
}
printf("\n");
}
</div>### Utilizando Ponteiros
Vamos analisar um exemplo básico de acesso a elementos de array através de ponteiros:
<div>```
void demonstrarAcesso() {
int valores[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
int* ptr = valores;
printf("Acesso via indice: %d\n", valores[2]);
printf("Acesso via aritmetica: %d\n", *(valores + 2));
printf("Acesso via ponteiro: %d\n", *(ptr + 2));
}
Aritmética de Ponteiros
Operação: Ponteiro + Inteiro
Imprimindo Elementos de Array
for (indice = 0; indice < total; indice++) {
printf("%d ", *(ponteiro + indice));
}
printf("\n");
}
</div>#### Imprimindo Valores Ímpares de 1 a 10
<div>```
void imprimirImpares() {
int numeros[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int* posicao = numeros;
int contador = 0;
for (contador = 0; contador < 5; contador++) {
printf("%d ", *posicao);
posicao += 2;
}
printf("\n");
}
for (i = 0; i < total; i++) {
printf("%d ", *(apontador - i));
}
printf("\n");
}
</div>### Operação: Ponteiro - Ponteiro
A subtração de ponteiros retorna a diferença entre dois endereços de memória, representando a distância entre posições em um mesmo bloco de memória.
<div>```
void calcularDistancia() {
int valores[5] = {100, 200, 300, 400, 500};
int* ponteiroFinal = &valores[4];
int* ponteiroInicial = &valores[0];
int* ponteiroMeio = &valores[2];
printf("Distancia total: %ld\n", ponteiroFinal - ponteiroInicial);
printf("Distancia parcial: %ld\n", ponteiroFinal - ponteiroMeio);
}
Implementação de strlen com Ponteiros
void testarTamanho() { printf("Tamanho de 'ola': %d\n", calcularTamanho("ola")); printf("Tamanho de 'programacao': %d\n", calcularTamanho("programacao")); }
</div>Este código percorre a string até encontrar o caractere nulo, e a diferença entre as posições finais e iniciais representa o comprimento da string.
### Operações Relacionais com Ponteiros
Ponteiros podem ser comparados para verificar posições relativas na memória:
<div>```
void iterarComComparacao() {
int dados[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int total = sizeof(dados) / sizeof(dados[0]);
int* atual = dados;
while (atual < dados + total) {
printf("%d ", *atual);
atual++;
}
printf("\n");
}