Puntero que se vuelve loco

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
telecomunicado
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Sab Sep 26, 2009 7:00 am

Puntero que se vuelve loco

Mensaje por telecomunicado » Sab Ene 23, 2010 12:01 am

hola linuxeros! estoy trabajando en el desarrollo de un driver de video y me pasa una cosa estrañisima, para no andarme con rodeos os lo voy a plantear con un ejemplo que anda tiene que ver pero que representa bien lo que que me esta pasando:
suponer que tengo dos funciones una llama a la otra, la primera posee dos puntros que tienen la direccion a sus correspondientes valores correctamente pero cuando paso estos punteros a la siguiente funcion y miro dentro de esta ultima su contenido(la direcion) esta ya no es la que deberia ser... decir que no se altera para anda el contenido del puntero en la primera funcion, es decir que no se toca, simplemente se lee, alguien sabe porque? lo pongo en forma de codigo que igual me entendeis mejor:

funcion a(int *p)
{ ...
funcionb(*p);
...
}

muchas gracias y espero que me podais ayudar
Última edición por maiku el Sab Ene 23, 2010 12:01 am, editado 1 vez en total.
Razón: Tema movido del Foro Proyectos al Foro Programación por no pertecer a dicha temática. Por favor lee las descripciones de cada foro.
Avatar de Usuario
shakka
Forista Mayor
Forista Mayor
Mensajes: 753
Registrado: Dom Sep 18, 2005 7:00 am
Contactar:

Re: Puntero que se vuelve loco

Mensaje por shakka » Sab Ene 23, 2010 1:08 am

Falta el resto de tu implementacion(no es suficiente, para saber como lo estas alterando el valor, si es a eso a lo que te refieres), que podria ser:

Código: Seleccionar todo

#include <stdio.h>

void b(int *p)
{
    printf("Antes -> %i\n", *p);
    *p = 6;
    printf("Despues -> %i\n", *p);
}

void a(int *p)
{
    b(p);
}


int main()
{
int x=5;
int *i;

    i = &x;
    a(i);

    printf("Asi quedo modificado por funcion b, llamada en function a -> %i\n", *i);

return 0;
}


Es a eso a lo que te refieres o es otra cosa?, explica!

Editado -- Sab Ene 23, 2010 9:08 am --

Es mas, aunque podria ser obvio, que lenguaje C o C++, para evitar algun malentendido
blog http://blog.mbrenes.com
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje