taleporos09 Δημοσ. 5 Ιανουαρίου 2009 Δημοσ. 5 Ιανουαρίου 2009 Γεια σας παιδες...καλη χρονια χρονια πολλα σε ολους....θα ηθελα να σας ρωτισω κτ....ειμαι λιγο αρχαριος στην C (οποτε περιμενω επιοίκια) Θα ηθελα λοιπον να σας ρωτησω πως μπορω να κανω ενα πινακα (πχ τυπου int) που θα εχει θεσεις οσες του πει ο χρηστης (δηλ. αρχικα αγνωστο αριθμο)???? Αυτο......περιμενω απαντηση και ευχαριστω εκ των προτερων....
pinball_elf Δημοσ. 5 Ιανουαρίου 2009 Δημοσ. 5 Ιανουαρίου 2009 Στην C οι πίνακες έχουν πάντα σταθερό μήκος. Για να μπορέσεις να έχεις κάτι σαν δυναμικούς πίνακες πρέπει να χρησιμοποιήσεις δείκτες: > #include <stdlib.h> #include <stdio.h> int main (void) { int *a = NULL; int i = 0; int n = 10; a = (int *)malloc(sizeof(int)*n); /* στην ουσία ο παραπάνω κώδικας δημιουργεί στην μνήμη δυναμικά μια ακολουθία (πίνακας) από int μεταβλητές */ for (i=0;i<10;i++) a[i] = i+1; for (i=0;i<10;i++) fprintf(stderr, "a[%d] = %d\n", i, a[i]); free(a); /* μην ξεχνάς ποτέ να ελευθερώνεις δυναμική μνήμη! */ return 0; } Edit: Με πρόλαβε ο Billman.
taleporos09 Δημοσ. 5 Ιανουαρίου 2009 Μέλος Δημοσ. 5 Ιανουαρίου 2009 ευχαριστω αλλα οπως σας ειπα ειμαι αρχαριος....μηπως μπορειτε να μου εξηγησετε τι σημεινουν τα... int *a = NULL; fprintf(stderr, "a[%d] = %d\n", i, a); (τα NULL,fprintf και stderr δηλ ) για να μπορεσω να καταλαβω την malloc Eυχαριστω και παλι
pinball_elf Δημοσ. 5 Ιανουαρίου 2009 Δημοσ. 5 Ιανουαρίου 2009 Είναι απλά η αρχικοποίηση της ματαβλητής a. Επειδή η ματαβλητή a έιναι δείκτης σε int, την αρχικοποιώ έτσι ώστε να μην δείχνει πουθενά δηλ. NULL (κενός δείκτης). -----Προστέθηκε 5/1/2009 στις 03 : 44 : 26----- Απο τι φαίνεται έισαι πάρα πολύ αρχάριος, οπότε καλύτερα να ξεκινήσεις απο τα βασικά πρώτα και μετά να προχωρήσεις σε πίνακες και δείκτες
taleporos09 Δημοσ. 5 Ιανουαρίου 2009 Μέλος Δημοσ. 5 Ιανουαρίου 2009 ναι οντως ειμαι πολυ αρχαριος αλλα δεν μπορω να κανω διαφορετικα...πρεπει να χρησιμοποιησω την malloc (αποτι καταλαβα η fprintf(stderr " ") μπορει να παραληφθει....σωστα?) ευχαριστω και συγγνωμη αν σας κουρασα
snowPrincess Δημοσ. 5 Ιανουαρίου 2009 Δημοσ. 5 Ιανουαρίου 2009 ναι οντως ειμαι πολυ αρχαριος αλλα δεν μπορω να κανω διαφορετικα...πρεπει να χρησιμοποιησω την malloc (αποτι καταλαβα η fprintf(stderr " ") μπορει να παραληφθει....σωστα?) ευχαριστω και συγγνωμη αν σας κουρασα H fprintf είναι μια απλή συνάρτηση που τυπώνει σε κάποιο Output, πχ. στην οθόνη. Όπως σου είπανε και πριν μάθε πρώτα να στέκεσαι και μετά να περπατάς... Δυστυχώς είναι νόμος της φύσης. Good luck!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.