Pensé que si se incrementaba un puntero c apuntando a una matriz char, apuntaría al siguiente elemento en esa matriz. Pero cuando probé esto, descubrí que tenía que incrementarlo dos veces. Probando el incremento usando sizeof (char) encontré que agregar el tamaño de un char era demasiado, así que tenía que dividirse por dos.Incrementando punteros C
#include <stdio.h>
int main(int argc, char * argv[]){
char *pi;
int i;
pi = argv[1];
printf("%d args.\n",argc-1);
printf("input: ");
for(i=0;i<argc-1;i++){
printf("%c, ",*pi);
/*The line below increments pi by 1 char worth of bytes */
//pi+=sizeof(pi)/2;
/* An alternative to the above line is putting pi++ twice - why? */
pi++;
pi++;
}
printf("\n");
return 0;
}
¿Hago algo mal? o estoy malentendiendo el método de incremento de punteros?
Su primer ejemplo de código no es válido "y INT_array" tiene el tipo "puntero a matriz de int", que es incompatible con "puntero a int", se necesita usar "& int_array [0]" o simplemente "int_array" en su lugar.Además, sizeof (char) está * definido * para ser 1 en C, no hay "probablemente" al respecto. –
¡Gracias, Robert! Tienes razón, por supuesto; He arreglado la publicación. – Avi