Προς το περιεχόμενο

Μια μικρή βοήθεια στην C!


georgep800

Προτεινόμενες αναρτήσεις

Δημοσ.

@Lomar:

 

Το βιβλίο αυτό είναι. Υπενθυμίζω ότι απλώς το προτείνω όπως και πολλοί άλλοι ως το βιβλίο σταθμό στην γλώσσα C και ιδιαίτερα σε θέματα δεικτών.

 

Εδώ:

>
if ((a=(double **)malloc(n*sizeof(double *)))==NULL){
       printf("\nNot enough memory available.\n");
       exit(1);
   }

...ζητάω μνήμη για n δείκτες σε double. Πρόκειται για τον πίνακα δεικτών σε γραμμές του αλγεβρικού μου πίνακα. Τα **="δείκτη σε δείκτη σε ..." ενώ το * είπαμε...

 

Και εδώ:

>
   for(i=0;i<n;i++){
       if ((a[i]=(double *)malloc(n*sizeof(double)))==NULL){
           printf("\nNot enough memory available.\n");
           exit(1);
       }

...ζητάω n φορές, μία για κάθε γραμμή, μνήμη για n στοιχεία double περιεχόμενα κάθε γραμμής άρα στήλες. Φαντάσου ότι θα μπορούσα να ζητάω διαφορετικό πλήθος στοιχείων σε κάθε γραμμή οπότε αν ο πίνακας μου ήταν συμμετρικός για παράδειγμα να έκανα και οικονομία μνήμης.

 

Πρέπει εδώ να σημειώσω ότι έμαθα από το προηγούμενο θέμα ότι οι φράσεις (double *) και (double **) πριν την malloc (casting) -και όχι μέσα της στο sizeof- πρέπει να αποφεύγονται. Στο νέο παράδειγμα - παραλλαγή τις διέγραψα.

 

Το θέμα είναι σχετικά προχωρημένο για αρχάριο, το ξαναλέω με άλλα λόγια. Απόδειξη το λάθος-quiz του παλαιού αναφερθέντος θέματος. Παρόλα αυτά μην ανησυχείς δεν σταματώ... Ίσως διότι ανήκω στους τελευταίους των malloιcών...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...