eso es que malloc devuelve un puntero genérico a void.
En una explicacion algo más entendible:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
struct nodo{
int dato;
struct nodo *siguiente;
}n;
int main (){
//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
void* nodoNuevo
= malloc( sizeof(n
) );
nodo* pNodo; // <- ¿Pero quieres guardarlo aquí no? XD
//¡solución! Cast de nuevo nodo que es del tipo void* a pNodo que es un puntero a nodo*. =DD
pNodo = ( nodo* ) nodoNuevo;
//ahora pNodo ya guarda la dirección de lo que tu quieres. Es más o menos lo que
//hace nodoNuevo = (pNodo)malloc(sizeof(Nodo)); tal como te lo dijo dehm
pNodo->dato = 10;
return 0;
}
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. ;)