Enviado em 14/01/2015 - 15:18h
Ola pessoal estou dando uma olhada em aritmetica em ponteiros, mais precisamente sobre o incremento deles..
Vi em 2 livros que existe 2 formas de se incrementar um ponteiro:
- Por elemento que ele aponta(caso um array)
- Por tipo de dado que ele aponta.
Ai fiz o codigo abaixo para ver na pratica como isso é feito, gostaria de saber se é isto mesmo ou se alguem tem mais alguma coisa a complementar:
Vi em 2 livros que existe 2 formas de se incrementar um ponteiro:
- Por elemento que ele aponta(caso um array)
- Por tipo de dado que ele aponta.
Ai fiz o codigo abaixo para ver na pratica como isso é feito, gostaria de saber se é isto mesmo ou se alguem tem mais alguma coisa a complementar:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main() {
char *nome = "daniel";
int i = 0;
int *pi = &i;
/* Incremento por posicao*/
printf("Imprimindo array incrementando o ponteiro:\n");
for (i=0; i<strlen(nome);i++) {
printf("Caracter: %c | Endereco: %p , %d\n",*(nome+i),(nome+i),(nome+i));
}
/* Incremento por tipo de dado*/
printf("\nNumero: %d | Endereco: %p , %d\n",i,&i,&i);
printf("\nConteudo apontado pelo ponteiro: %d \nEnd para onde o ponteiro aponta: %p %d\n",*pi,pi,pi);
printf("\nIncrementando o ponteiro pelo tipo\n");
printf("%d , %d <-- Moveu %d bytes por que um int tem: %d bytes\n",i+1,(int)(pi+1),(int)(pi+1)-(int)(pi),sizeof(int));
return 0;
}