Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/04/2015, 07:27
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: invalid conversion from 'void*' to 'pNodo {aka nodo*}' [-fpermissive]

eso es que malloc devuelve un puntero genérico a void.
En una explicacion algo más entendible:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct nodo{
  5. int dato;
  6. struct nodo *siguiente;
  7. }n;
  8.  
  9. int main (){
  10.     //nodo nuevo junto con malloc ahora no chilla ya que devuelve es un puntero a void, pues lo guardamos en un puntero de tipo void como debe de ser =D
  11.     void* nodoNuevo = malloc( sizeof(n) );
  12.    
  13.     nodo* pNodo;  // <- ¿Pero quieres guardarlo aquí no? XD
  14.    
  15.     //¡solución! Cast de nuevo nodo que es del tipo void* a pNodo que es un puntero a nodo*. =DD
  16.     pNodo = ( nodo* ) nodoNuevo;
  17.    
  18.     //ahora pNodo ya guarda la dirección de lo que tu quieres. Es más o menos lo que
  19.     //hace nodoNuevo = (pNodo)malloc(sizeof(Nodo)); tal como te lo dijo dehm
  20.     pNodo->dato = 10;
  21.    
  22.    
  23.     printf("%d\n",pNodo->dato );
  24.    
  25.     free(nodoNuevo);
  26.     getchar();
  27.     return 0;
  28. }

Todo lo de arriba hace en una sola linea: nodo* pNodo; = ( nodo* )malloc( sizeof(n) );
Creo que ahora ya sabes que ocurre y por que te da error. El error te da por que malloc no es advino.. No puede saber el tipo de puntero que debe retornar, eso lo tienes que indicar tu haciendo un cast al tipo que necesites. ;)