Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error asignacion punteros ayuda urgente

Estas en el tema de Error asignacion punteros ayuda urgente en el foro de C/C++ en Foros del Web. Hola: sucede que tengo el siguiente codigo struct Nodo{ int numero; struct Adyacencia *AD; struct Nodo *sigte; }; struct Nodo *Nuevo_nodo(){ struct Nodo *nuevo; nuevo->sigte=NULL; ...
  #1 (permalink)  
Antiguo 22/11/2010, 00:36
 
Fecha de Ingreso: mayo-2010
Mensajes: 43
Antigüedad: 13 años, 11 meses
Puntos: 0
Error asignacion punteros ayuda urgente

Hola:

sucede que tengo el siguiente codigo

struct Nodo{
int numero;
struct Adyacencia *AD;
struct Nodo *sigte;
};

struct Nodo *Nuevo_nodo(){
struct Nodo *nuevo;
nuevo->sigte=NULL;
nuevo->numero=0;

return(nuevo);
}

algo tan simple como eso y se cae en las lineas de negritas

cualquier asignacion del estilo x->y=z; se cae

estoy usando el dev c++ en windows 7 y compila ok pero la ejecuccion se interrumple y sale el mensaje main.exe dejo de funcionar blablabla

alguien sabe que mierda estoy haciendo mal?
  #2 (permalink)  
Antiguo 22/11/2010, 02:45
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Error asignacion punteros ayuda urgente

Cuando declaras

struct Nodo *nuevo;

has declarado un puntero a Nodo, pero no has reservado memoria para esa estructura de datos. Por eso el programa casca, nuevo contendrá una dirección de memoria que apuntará a quién sabe dónde, y vete a saber lo que haces al asignar valores a los elementos de una estructura que aún no existe. Antes de utilizarla, debes reservar mempria para ella, algo así como:

Código C:
Ver original
  1. struct Nodo *Nuevo_nodo(void)
  2. {
  3.  struct Nodo *nuevo;
  4.  
  5.  nuevo = (struct Nodo *)malloc(sizeof(struct Nodo));
  6.  // Ahora puedes emplear los elementos de la estructura
  7.  nuevo->sigte = NULL;
  8.  nuevo->numero = 0;
  9.  return nuevo;
  10. }

Y no olvides liberar la memoria reservada con malloc (o con new, si utilizas C++) cuando dejes de necesitarla.
  #3 (permalink)  
Antiguo 22/11/2010, 09:48
 
Fecha de Ingreso: mayo-2010
Mensajes: 43
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Error asignacion punteros ayuda urgente

Hola gracias por la ayuda pero tengo otro problema

con matriz y su llenado

Código C:
Ver original
  1. int matriz[8][8];
  2.  
  3. for(i=0;i<=8;i++){   //se llena la matriz con (-1)
  4.          for(j=0;j<=8;j++){
  5.                  matriz[i][j]=(-1);
  6.                      }
  7.                }

hago eso pero se llena con un solo numero nada que ver algo como 234857433 en toda la matriz
  #4 (permalink)  
Antiguo 22/11/2010, 12:19
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Error asignacion punteros ayuda urgente

posiblemente sea por que estas intentado escribir en una componente de la matriz que no existe:

for( i=0 ; i<=8 ; i++ )
la matriz tiene 8 elementos y tu asignas valor desde el 0 hasta el 8, es decir 9 veces, pero solo hay espacio para 8.



Código C:
Ver original
  1. for( i=0 ; i<8 ; i++ )
  #5 (permalink)  
Antiguo 23/11/2010, 01:28
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Error asignacion punteros ayuda urgente

Y lo mismo para el bucle j.
  #6 (permalink)  
Antiguo 24/11/2010, 14:55
 
Fecha de Ingreso: mayo-2010
Mensajes: 43
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Error asignacion punteros ayuda urgente

nah no era eso, los bucles estan bien

el problema era que estaba imprimiendo direcciones de memoria en vez de el valor de la matriz se me escapo un & en el printf

Saludos y gracias, ya lo pueden cerrar

Etiquetas: asignacion, punteros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:40.