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

Πινακες στην C


taleporos09

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

Δημοσ.

Γεια σας παιδες...καλη χρονια χρονια πολλα σε ολους....θα ηθελα να σας ρωτισω κτ....ειμαι λιγο αρχαριος στην C (οποτε περιμενω επιοίκια)

Θα ηθελα λοιπον να σας ρωτησω πως μπορω να κανω ενα πινακα (πχ τυπου int) που θα εχει θεσεις οσες του πει ο χρηστης (δηλ. αρχικα αγνωστο αριθμο)????

Αυτο......περιμενω απαντηση και ευχαριστω εκ των προτερων....:-)

Δημοσ.

Στην 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.

Δημοσ.

ευχαριστω αλλα οπως σας ειπα ειμαι αρχαριος....μηπως μπορειτε να μου εξηγησετε τι σημεινουν τα...

int *a = NULL;

 

fprintf(stderr, "a[%d] = %d\n", i, a);

 

 

 

(τα NULL,fprintf και stderr δηλ ) για να μπορεσω να καταλαβω την malloc

 

Eυχαριστω και παλι

Δημοσ.

Είναι απλά η αρχικοποίηση της ματαβλητής a. Επειδή η ματαβλητή a έιναι δείκτης σε int, την αρχικοποιώ έτσι ώστε να μην δείχνει πουθενά δηλ. NULL (κενός δείκτης).

 

 

-----Προστέθηκε 5/1/2009 στις 03 : 44 : 26-----

 

 

Απο τι φαίνεται έισαι πάρα πολύ αρχάριος, οπότε καλύτερα να ξεκινήσεις απο τα βασικά πρώτα και μετά να προχωρήσεις σε πίνακες και δείκτες ;)

Δημοσ.

ναι οντως ειμαι πολυ αρχαριος αλλα δεν μπορω να κανω διαφορετικα...πρεπει να χρησιμοποιησω την malloc (αποτι καταλαβα η fprintf(stderr " ") μπορει να παραληφθει....σωστα?)

 

ευχαριστω και συγγνωμη αν σας κουρασα

Δημοσ.
ναι οντως ειμαι πολυ αρχαριος αλλα δεν μπορω να κανω διαφορετικα...πρεπει να χρησιμοποιησω την malloc (αποτι καταλαβα η fprintf(stderr " ") μπορει να παραληφθει....σωστα?)

 

ευχαριστω και συγγνωμη αν σας κουρασα

H fprintf είναι μια απλή συνάρτηση που τυπώνει σε κάποιο Output, πχ. στην οθόνη.

Όπως σου είπανε και πριν μάθε πρώτα να στέκεσαι και μετά να περπατάς...

Δυστυχώς είναι νόμος της φύσης.

Good luck!

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

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

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