Título: Incrementar puntero entero con ++ en vez de += Publicado por: mester en 2 Enero 2016, 19:38 pm Hola.
Como dice el título: ¿Cómo puedo incrementar un puntero con ++ en vez de +=1? Por ejemplo: Código
Si escribo esto el programa me manda a la m*****. Sin embargo si lo hago así: Código
Me imprime un 6. ¿Esto a qué es debido? ¿Estoy incrementando mal el puntero? Título: Re: Incrementar puntero entero con ++ en vez de += Publicado por: 0xFer en 2 Enero 2016, 20:01 pm *algo += 1; Incrementa el valor apuntado por el puntero( en este caso incrementa a la variable cosa).
*algo++; Incrementa la dirección del puntero( esto hace que se deje de apuntar a la dirección de la variable cosa). Ahora si quieres usar ++ para incrementar el valor apuntado por el puntero entonces usa (*algo)++; Título: Re: Incrementar puntero entero con ++ en vez de += Publicado por: MAFUS en 2 Enero 2016, 20:02 pm Es por la precedencia de los operadores. En tu caso lo que hacías era apuntar a una zona de memoria a la que el S.O. te deniega el acceso, incrementabas la dirección del puntero.
Usa parentesis para hacer lo que quieres, o varia la posición del ++, según como deba trabajar tu código en una sentencia compleja: Código o Código En una sentencia simple de incremento como la que buscas puedes usar la forma que quieras. Título: Re: Incrementar puntero entero con ++ en vez de += Publicado por: mester en 2 Enero 2016, 20:07 pm Vale, gracias 0xFer y MAFUS, como siempre tú me resuelves las dudas de C.
No sabía que con los enteros el ++ también los movía de posición. Pensaba que era sin * cuando lo querías mover y tal. |