Operações com Ponteiros em C - Aritmética e Aplicações Práticas

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");
}

Tags: C ponteiros aritmetica-de-ponteiros Arrays programação

Publicado em 6-22 04:01