Ποια είναι η διαφορά μεταξύ int * a; και int ** a; στο C;


Απάντηση 1:

Ας υποθέσουμε ότι παίρνουμε

int i;

int * a;

int ** b;

Τώρα a είναι ένας δείκτης που αποθηκεύει τη διεύθυνση του i, ονομάζεται δείκτης καθώς υποδεικνύει μια διεύθυνση η οποία είναι του ενός τύπου ....

int * a μπορεί να αποθηκεύσει τη διεύθυνση του i δεδομένου ότι είναι μια μεταβλητή ακέραιος.

Τώρα κοιτάξτε το int ** b είναι ένας δείκτης σε ένα δείκτη που μπορείτε να το δείτε σαν int * (* b) σημαίνει ότι είναι ένας δείκτης που θα δείχνει σε άλλο δείκτη τύπου ακέραιου ....

Μέσα b θα αποθηκεύσει τη διεύθυνση ενός.

Επομένως, μπορούμε να ορίσουμε τιμές σε τρεις μεταβλητές όπως:

i = 5;

a = & i;

b = & a;

Σπουδαίος:

εάν θα εκτυπώσετε i: 5 (τιμή) θα εκτυπωθεί.

αν θα εκτυπώσετε μια: διεύθυνση του i θα εκτυπωθεί.

εάν θα εκτυπώσετε * a: 5 (τιμή) θα εκτυπωθεί.

αν θα εκτυπώσετε b: Θα εκτυπωθεί η διεύθυνση του a

εάν θα εκτυπώσετε * b: η διεύθυνση του i θα εκτυπωθεί

αν θα εκτυπώσετε ** b: 5 (τιμή) θα εκτυπωθεί.


Απάντηση 2:

Γεια σας, δείτε παρακάτω το διάγραμμα και τον κωδικό, θα πάρετε την απάντησή σας. Στην πραγματικότητα, η έννοια του δείκτη δείκτη-δείκτη (δείκτης διπλού δείκτη)

Η διεύθυνση της μεταβλητής num έχει: 1000

Η διεύθυνση του δείκτη ptr1 είναι: 2000

Η διεύθυνση του δείκτη ptr2 είναι: 3000

// -------- code ------- //

#include

int main ()

{

int num = 10;

int * ptr1;

int ** ptr2;

ptr1 = & num;

ptr2 = & ptr1;

printf ("Αξία του num =% d \ n", num);

printf ("Τιμή διαθέσιμη στο * ptr1 =% d \ n", * ptr1);

printf ("Τιμή διαθέσιμη στο ** ptr2 =% d \ n", ** ptr2);

}}

Παραγωγή:

Τιμή του num = 10

Τιμή διαθέσιμη στο * ptr1 = 10

Τιμή διαθέσιμη στο ** ptr2 = 10