priest91 Δημοσ. 15 Ιανουαρίου 2010 Δημοσ. 15 Ιανουαρίου 2010 Καλησπέρα παιδιά,επειδή δεν εχούμε κάνει ακόμα δείκτες στη σχολή και τους μαθαίνω μόνος μου,έχω μια απόρια στους δισδιάστατους πίνακες.. Θα ήθελα να μου γραψετε ενα μικρο παραδειγμα,οπου μια συναρτηση θα δεχεται ως ορισμα εναν δισδιαστατο πινακα τον οποιο να μπορω να τον επεξεργαστω στη συναρτηση και να τον επιστρεψω στην main().Ευχαριστω προκαταβολικα..
tespa_2002 Δημοσ. 16 Ιανουαρίου 2010 Δημοσ. 16 Ιανουαρίου 2010 Δε χρειάζεσαι απαραίτητα δείκτες για να το κάνεις αυτό. Δες το παρακάτω: > #define HEIGHT 10 #define WIDTH 20 void init_array(int array[][WIDTH]) { int i, j; for (i = 0; i < HEIGHT; i++) for (j = 0; j < WIDTH; j++) array[i][j] = i+j*2; } void print_array(int array[][WIDTH]) { int i, j; for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) printf("(%d, %d) = %d\t", i, j, array[i][j]); printf("\n"); } } int main (int argc, char *argv[]) { int input[HEIGHT][WIDTH]; init_array(input); print_array(input); return(0); } Η init_array παίρνει ως παράμετρο τον πίνακα input που έχει οριστεί στη main και βάζει αρχικές τιμές στα στοιχεία του. Η print_array παίρνει τον ίδιο πίνακα ως παράμετρο και τον τυπώνει. Πρόσεξε ότι δεν είναι απαραίτητο (δεν απαγορεύεται κιόλας) να δώσεις την 1η διάσταση του πίνακα στον τύπο των παραμέτρων των συναρτήσεων. Οι αλλαγές που κάνεις στον πίνακα μέσα στη συνάρτηση φαίνονται έξω από τη συνάρτηση, γιατί ένας πίνακας είναι ειδική περίπτωση μεταβλητής: το όνομά του είναι πρακτικά δείκτης (κατ' ακρίβεια δείκτης σε δείκτη για την περίπτωση του 2D πίνακα). Μπορείς να χρησιμοποιήσεις και καθαρά δείκτες για αυτή τη δουλειά, αλλά αφού δεν ξέρεις από δείκτες, μάλλον δεν είναι η καλύτερη ιδέα ...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.