In realtà non ho ben capito una riga di un codice preso su internet sull'implementazione della struttura lista (il programma funziona correttamente).
quello che non capisco è la scrittura :
void stampaLista(struct elemento *);
void: vuol dire che non ritorna nessun valore
stampalista: è il nome della funzione
struct elemento * :rappresenta l'argomento di tipo struttura che ha definito sopra, ma perchè usa l'asterisco (*)? cosa intende con questa scrittura? quali sono i suoi usi?
altro dubbio è su questa riga:
struct elemento *creaLista();
perchè mette l'asterisco vicino alla funzione creaLista() ?
so che l'asterisco rappresenta un puntatore ma non ho capito in questo caso come lo usa.
posto per completezza l'intero codice:
// crea lista di n elementi
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <malloc.h>
struct elemento{
int inf; // valore
struct elemento *pun; //puntatore elemento successivo
};
struct elemento *creaLista();
void stampaLista(struct elemento *);
int main(){
struct elemento *lista;
lista=creaLista();
stampaLista(lista);
return 0;
}
struct elemento *creaLista(){
struct elemento *p,*punt;
int i,n,K;
printf("specificare numero elementi ");
K=scanf("%d",&n);
if (n==0){
p=NULL; // Lista vuota
}else{
p=(struct elemento *)malloc(sizeof(struct elemento));
printf("inserisci elemento ");
K=scanf("%d",&p->inf);
punt=p;
for (i=2;i<=n;i++){
punt->pun=(struct elemento *)malloc(sizeof(struct elemento));
punt=punt->pun;
printf("inserisci elemento: ");
K=scanf("%d",&punt->inf);
}
punt->pun=NULL; //marcatore fine lista
}
return (p);
}
void stampaLista(struct elemento *p){
printf("lista: ");
while (p!=NULL){
printf("%d",p->inf);
printf("->");
p=p->pun; // scorre elemento
}
printf("NULL \n");
}
grazie in anticipo