Δημοσιεύτηκε: 30 Αύγ 2011, 17:53
Σχέση μεταξύ Πινάκων & Δεικτών
Ένα όνομα πίνακα καταρχήν χωρίς τις αγκύλες αποτελεί απο μόνο του δείκτη στο 1ο στοιχείο αυτης της διάταξης. Έτσι μπορεί να γίνει προσπέλαση του 1ου στοιχείου της διάταξης χρησιμοποιώντας τον τελεστή διακοπής αναφοράς που κάποιες φορές λέγεται και τελεστής έμμεσης διευθυνσιοδότησης! ΑΥτος ο τελεστής ειναι ο αστερίσκος (*)
-Φανταζομαι δεν τον εχετε και εχουμε ξαναδει- Αν έχεις λοιπον :
τοτε τα
Παρακατω δίνεται ενας μικρος και απλος κωδικας που αποτελει απλο παραδειγμα και των παραπανω... μεσα στον κωδικα δηλωνω και εναν αλλον δεικτη τον ptr_int τον οποιο αρχικοποιω με την αρχικη διευθυνση του δοθέντος πινακα x διοτι η διευθυνση του 1ου στοιχειου αποτελει και την αρχικη διεύθυνση του πινακα. Επομενως ειναι κατι σαν επαληθευση μιας και οι 2 printf δινουν ιδια δεκαεξαδικη τιμη (διεύθυνση του πινακα) επομενως το x σκετο δινει αυτο που λεμε πιο πανω.
οπου
Π.Σ Ο μορφοποιητής %p "λεει" στην printf να εκτυπώνει δεκαεξαδικές διευθύνσεις.
Ένα όνομα πίνακα καταρχήν χωρίς τις αγκύλες αποτελεί απο μόνο του δείκτη στο 1ο στοιχείο αυτης της διάταξης. Έτσι μπορεί να γίνει προσπέλαση του 1ου στοιχείου της διάταξης χρησιμοποιώντας τον τελεστή διακοπής αναφοράς που κάποιες φορές λέγεται και τελεστής έμμεσης διευθυνσιοδότησης! ΑΥτος ο τελεστής ειναι ο αστερίσκος (*)
- Κώδικας: Επιλογή όλων
int x[4]={1,2,3,4};
τοτε τα
- Κώδικας: Επιλογή όλων
*x , x
Παρακατω δίνεται ενας μικρος και απλος κωδικας που αποτελει απλο παραδειγμα και των παραπανω... μεσα στον κωδικα δηλωνω και εναν αλλον δεικτη τον ptr_int τον οποιο αρχικοποιω με την αρχικη διευθυνση του δοθέντος πινακα x διοτι η διευθυνση του 1ου στοιχειου αποτελει και την αρχικη διεύθυνση του πινακα. Επομενως ειναι κατι σαν επαληθευση μιας και οι 2 printf δινουν ιδια δεκαεξαδικη τιμη (διεύθυνση του πινακα) επομενως το x σκετο δινει αυτο που λεμε πιο πανω.
- Κώδικας: Επιλογή όλων
int main(void)
{
int x[4]={1,2,3,4};
int i;
int *ptr_x;
for(i=0; i<4; i++)
printf("%d",*(x+i));
printf("\n%p \n\n",x);
ptr_x=x;
printf("\n %p \n",ptr_x);
return 0;
}
οπου
- Κώδικας: Επιλογή όλων
*(x+i)==x[i]
Για i=0 *(x+0)==x[0]
Για i=1 *(x+1)==x[1]
.....
Για i=ν *(x+v)==x[ν]
Π.Σ Ο μορφοποιητής %p "λεει" στην printf να εκτυπώνει δεκαεξαδικές διευθύνσεις.