Programación General > C/C++

 Puntero incompatible

(1/1)

alonsonic:
Primero q todo buenas es el primer post q hago y enserio q me enamore de esta comunidad desde el primer momento que entre se puede llegar a aprender mucho de esta forma enserio sigan con este increible trabajo por ahora estoy un poco novato pero espero aportar tambien a quien lo necesite.

mi problema es este tengo un codigo bastante sencillo

--- Código: C --- #include <stdio.h>#include <stdlib.h>#include<string.h> struct album{    char nombre[20];    int fecha;    int puntuacion;    char ilustracion[20];    struct album *next;};typedef struct album _album;  struct artist{    char grupo[20];    char solista[20];    int validador; //para grupo o solista    _album *CDS;    struct artist *next;};typedef struct artist _artist;  _album *crearAlbums(){    _album *auxiliar;    int lanzamiento;    int puntuacion;    char nombreAlbum[20];    auxiliar=malloc(sizeof(_album));    printf("Nombre del album para el artista");    scanf("%s",nombreAlbum);        strcpy(auxiliar->nombre, nombreAlbum);    printf("Fecha de lanzamiento del album");    scanf("%d",&lanzamiento);       auxiliar->fecha=lanzamiento;    printf("Puntuacion del album");    scanf("%d",&puntuacion);    auxiliar->puntuacion=puntuacion;        auxiliar->next=NULL;    return auxiliar;} _artist *crearArtist(char nombreArtista[20], int validar){    _artist *auxiliar;    auxiliar=malloc(sizeof(_artist));    if(validar==0) //1 para solista, 0 para grupo    {        strcpy(auxiliar->grupo, nombreArtista); strcpy(auxiliar->solista, "");    }    else    {        strcpy(auxiliar->solista, nombreArtista); strcpy(auxiliar->grupo, "");    }                       auxiliar->CDS=crearAlbums;   **********ERROR********    auxiliar->validador=validar; //innecesario estudiar luego comportamiento    auxiliar->next=NULL;    return auxiliar;} _artist *insertarArtistaFinal(char nombreArtista[20],int validar,_artist *apuntador){    _artist *auxiliar=apuntador;    while (auxiliar->next!=NULL)    {        auxiliar=auxiliar->next;    }    auxiliar->next=crearArtist(nombreArtista, validar);    return apuntador;}   
me tira un errorcito que dice q el puntero es incompatible en la linea 60 q seria la marcada con *****
nadie sabe que puede ser porq no puedo seguir mi proyecto si no logro entender porq me da ese error, a mi parecer esta bien porq la funcion devuelve un puntero tipo _album que seria el mismo tipo de puntero del campo CDS de artista, gracias!!!!

Epa:
Buenas.

No se si sera esto, pero te faltan los parentesis:
auxiliar->CDS=crearAlbums();

Es raro igual que los malloc no te tiren error, malloc devuelve un puntero null, por lo que te conviene hace un cast, para evitar cualqueir inconveniente:

auxiliar=(_album*)malloc(sizeof(_album));

Espero que eso resuelva tu problema.
Saludos

alonsonic:
Gracias!!! epa! si era eso de los parentesis q tonteria, pero lo del malloc no me tira error nunca, porq sera? no entiendo eso de q te arroja un puntero null, sera q el mismo malloc identifica a que tipo de puntero se iguala? nunca le e espesificado eso como escribistes alli, si me explicas un poquito eso miercoles seria feliz, programador en crecimiento jejeje

Epa:
Perdon, acabo de leer, y dije culquier cosa  :unsure:

No devuelve un puntero null (ya que no tendrias la direccion que necesitas), sino un puntero void, o sea sin tipo, el c en la mayoria de los casos hace conversiones implicitas en las asignaciones de diferentes tipos, pero conviene hacerlas explicitas en muchos casos por precaucion.

alonsonic:
ah ok perfecto ahora si entendi, enserio gracias epa! una tonteria q no me dejaba seguir el proyecto y no encontraba.  :comp: thanks!

Navegación

[0] Índice de Mensajes

Ir a la versión completa