C Διαβιβάστε διευθύνσεις και δείκτες σε λειτουργίες

Σε αυτό το σεμινάριο, θα μάθετε να μεταδίδετε διευθύνσεις και δείκτες ως επιχειρήματα σε λειτουργίες με τη βοήθεια παραδειγμάτων.

Στον προγραμματισμό C, είναι επίσης δυνατή η μεταφορά διευθύνσεων ως ορίσματα σε συναρτήσεις.

Για να αποδεχτούμε αυτές τις διευθύνσεις στον ορισμό της συνάρτησης, μπορούμε να χρησιμοποιήσουμε δείκτες. Είναι επειδή οι δείκτες χρησιμοποιούνται για την αποθήκευση διευθύνσεων. Ας πάρουμε ένα παράδειγμα:

Παράδειγμα: Διαβιβάστε διευθύνσεις σε συναρτήσεις

 #include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 num1 = 10 num2 = 5

Η διεύθυνση των num1 και num2 μεταβιβάζεται στη swap()συνάρτηση χρησιμοποιώντας swap(&num1, &num2);.

Οι δείκτες n1 και n2 αποδέχονται αυτά τα επιχειρήματα στον ορισμό της συνάρτησης.

 void swap(int* n1, int* n2) (… ) 

Όταν τα * n1 και * n2 αλλάζουν μέσα στη swap()συνάρτηση, αλλάζουν επίσης τα num1 και num2 μέσα στην κύρια () συνάρτηση.

Μέσα στη swap()συνάρτηση, *n1και *n2ανταλλαγή. Ως εκ τούτου, τα num1 και num2 ανταλλάσσονται επίσης.

Παρατηρήστε ότι swap()δεν επιστρέφει τίποτα. ο τύπος επιστροφής του είναι void.

Παράδειγμα 2: Μετάδοση δεικτών σε συναρτήσεις

 #include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )

Εδώ, η τιμή που είναι αποθηκευμένη στο p *p, είναι 10 αρχικά.

Στη συνέχεια περάσαμε τον δείκτη p στη addOne()συνάρτηση. Ο δείκτης ptr λαμβάνει αυτήν τη διεύθυνση στη addOne()συνάρτηση.

Μέσα στη συνάρτηση, αυξήσαμε την τιμή που αποθηκεύτηκε στο ptr κατά 1 χρησιμοποιώντας (*ptr)++;. Δεδομένου ότι οι δείκτες ptr και p έχουν και οι δύο την ίδια διεύθυνση, το *pεσωτερικό main()είναι επίσης 11.

ενδιαφέροντα άρθρα...