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

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

  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.
1 ώρα πριν, Fortistis είπε

@Ilias95
@defacer

@imitheos

OK. Είμαι λάθος σε αυτό. 

Αν λες "οκ είμαι λάθος" απλά για να σκάσουμε και να λήξει το θέμα τότε δεν έχει νόημα.

Εννοούσες κάτι άλλο και δεν καταλάβαμε εμείς τι ήταν αυτό ? Αν όχι, κατάλαβες γιατί είσαι λάθος ? Σημασία έχει να καταλαβαινόμαστε και να μαθαίνουμε.

Δημοσ.
12 λεπτά πριν, imitheos είπε

Αν λες "οκ είμαι λάθος" απλά για να σκάσουμε και να λήξει το θέμα τότε δεν έχει νόημα.

Εννοούσες κάτι άλλο και δεν καταλάβαμε εμείς τι ήταν αυτό ? Αν όχι, κατάλαβες γιατί είσαι λάθος ? Σημασία έχει να καταλαβαινόμαστε και να μαθαίνουμε.

Κατάλαβα ότι είμαι λάθος. Γιατί να το κάνω απλά για να "σκάσουμε και να λήξει το θέμα"; 

 

Δημοσ.
3 ώρες πριν, cvb~ είπε

Καλησπέρα. Εδώ https://www.digitalmars.com/articles/b44.html ο συντάκτης του κειμένου γράφει για παρόμοιο θέμα.

Και στο παρακάτω εκτός των άλλων, αναφέρονται οι λόγοι απο τον D. Ritchie που επιλέχθηκε αυτού του τύπου η προσέγγιση. (όπως στο άρθρο ή στο παράδειγμα [1] που ανέφερα πιο πίσω)

https://heim.ifi.uio.no/inf2270/programmer/historien-om-C.pdf

 

Δημοσ.

Ναι, και στην ενότητα Critique του pdf στη σελίδα 12 λέει κάποια πράγματα γι’ αυτό που λες, γιατί δηλαδή προσεγγίστηκε έτσι.

int f(a) int a[]; { ... } 
Αναφορά σε κείμενο

... a is,  in  this  special case  only, interpreted in C as a pointer. The notation survived in part for the sake of compatibility, in part under  the  rationalization  that  it  would  allow programmers  to  communicate  to  their  readers  an intent  to  pass f a  pointer  generated  from an  array,  rather  than a  reference  to  a single  integer. Unfortunately, it serves as much to confuse the learner as to alert the reader. ...

 

Δημοσ. (επεξεργασμένο)

Ένα άλλο ενδιαφέρον σημείο στο οποίο εμμέσως αναφέρθηκε και ο imitheos είναι όταν περνάς ένα 2-D array σε function.

Το:

void foo(int x[][3]);

ΔΕΝ γίνεται να αντικατασταθεί με:

void foo(int **x);

Η απάντηση στο γιατί βρίσκεται εδώ: http://c-faq.com/aryptr/pass2dary.html

 

Επεξ/σία από Ilias95
Δημοσ.
16 ώρες πριν, Ilias95 είπε

Ένα άλλο ενδιαφέρον σημείο στο οποίο εμμέσως αναφέρθηκε και ο imitheos είναι όταν περνάς ένα 2-D array σε function.

Το:


void foo(int x[][3]);

ΔΕΝ γίνεται να αντικατασταθεί με:


void foo(int **x);

Η απάντηση στο γιατί βρίσκεται εδώ: http://c-faq.com/aryptr/pass2dary.html

Να συμπληρώσω μόνο ότι η απάντηση βρίσκεται επίσης (από 'κει είναι), όπως και τα λίγα παραπάνω και όλα όσα αφορούν τη C, στη βίβλο: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

Ωραία τα tutorials, το youtube, το stackoverflow, τα επιπλέον βιβλία κ.τ.λ., αλλά καλό είναι να υπάρχει και η πηγή για όσους θέλουν να ασχοληθούν.

Δημοσ. (επεξεργασμένο)

Καλό αλλά και δύσκολο το βιβλίο των K&R. Σε μεγάλα, σημαντικά έργα όπως ο πυρήνας του Linux εκτός απ΄ αυτό προτείνουν και κάποια άλλα όπως το “Practical C Programming”, Steve Oualline και το “C: A Reference Manual”, Harbison and Steele. Η ιστοσελίδα που τα ανεφέρει βρίσκεται εδώ https://www.kernel.org/doc/html/v4.16/process/howto.html στην ενότητα Introduction. Επίσης κάποιοι λένε καλά λόγια και για το βιβλίο "C Programming: A Modern Approach", 2nd Edition, K. N. King. Αυτά, σε συνδυασμό με τα πρότυπα της γλώσσας C αλλά και γνωστούς, δοκιμασμένους ιστότοπους, μάλλον αποτελούν τις καλύτερες πηγές τεκμηρίωσης. Τέλος, στα ελληνικά, ένα απ' τα καλά βιβλία μάλλον είναι το "Η γλώσσα C σε βάθος", 5η εκδ, Ν. Χατζηγιαννάκης.

Επεξ/σία από cvb~

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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