Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DanielPy en 15 Marzo 2015, 18:36 pm



Título: Evacuar dudas sobre punteros en lenguaje C.
Publicado por: DanielPy en 15 Marzo 2015, 18:36 pm
Hola a todos.
Tengo unas cuantas dudas sobre punteros y voy a usar este espacio para evacuarlas todas juntas (de a una) espero con esto no infringir las reglas del foro, me faltan unos temas para terminar el libro y tal vez haya una diferencia de meses entre la primera y la última consulta, en este caso como empecé a estudiar inglés (de forma autodidacta como siempre) estoy haciendo un programita para aprender las 1000 palabras más usadas en inglés, como comprenderán no puedo poner todo en el main y cuando pase la estructura, el archivo, etc. A las funciones seguramente o no me correrá el programa y si logro que todo funcione seguramente me surgirán alguna duda como la que expongo a continuación.-

(http://i62.tinypic.com/v49uts.jpg)

NOTA: Veria con mucho agrado que alguien que tenga alguna duda sobre punteros las expusiera aquí.-

Un abrazo y gracias como siempre.
Daniel


Título: Re: Evacuar dudas sobre punteros en lenguaje C.
Publicado por: rir3760 en 15 Marzo 2015, 19:39 pm
Lo primero: si tienes una duda con respecto a código fuente ya sea un fragmento o un programa completo por favor publicalo como texto, así es mas fácil copiar y verificar este mediante el editor de texto favorito.

----

Los punteros (para ser exactos variables de tipo "puntero a T") son variables que almacenan direcciones de memoria, en base a ellas pueden acceder al objeto apuntado mediante indireccion con el operador "*" o "[]". Un caso similar sucede con el cartero: este no confunde las direcciones (punteros) con las casas (objetos apuntados).

En el caso de las funciones estas reciben todos sus  argumentos por valor, la única forma de modificar una variable declarada en otra función es si uno de estos valores es una dirección ya que al aplicar indireccion se accede al objeto apuntado (la bendita variable declarada en otra función).

El caso de scanf es exactamente ese: la función recibe una cadena de formato, por ejemplo "%c %d %f", en base a ella obtiene los tres valores (de tipo char, int y float, respectivamente) y los debe almacenar en tres variables, como espero puedas imaginar esas variables se indican mediante sus direcciones de memoria a continuación de la cadena de formato.

Un saludo