Δημοσιεύτηκε: 12 Σεπ 2011, 01:17
από Star_Light
εφτασα και στο τελευταιο step πλεον πριν αρχισω να κοιταω τον κωδικα σου....

Δομες και δείκτες (μεσα σε συναρτηση)

Spoiler: show
Κώδικας: Επιλογή όλων

#include <stdio.h>
#define N 254 + 1
typedef struct person
{
int age;
char name[N];
char surname[N];
} kostas ;

void struct_function(kostas *p);


int main(void)
{

kostas someone , *p;

p=&someone;

struct_function(p) ;

return 0;
}

void struct_function(kostas *p)
{


printf("Dwse to onoma sou: ");
fgets(p->name,254,stdin);

printf("Dwse to epwnumo sou: ");
fgets(p->surname,254,stdin);

printf("Dwse tin ilikia sou: ");
scanf("%d",&(*p).age);


printf("========================================");

printf("\nTo onoma pou edwses einai: %s",p->name);
printf("H ilikia pou edwses einai: %d",p->age);
printf("\nTo epwnimo pou edwses einai: %s",p->surname);

}


Λοιπον εχω καποιες βασικες αποριες ομως... ωρες ωρες οι δεικτες με βασανιζουν και δεν ξερω το γιατι....

1.
Κώδικας: Επιλογή όλων
struct_function(p)


Ουσιαστικα εδω ειναι κληση με τιμη , και η ιδια αυτη η τιμη ειναι η διευθυνση που δειχνει ο δεικτης p
αρα η διευθυνση της someone γιατι σε αυτην ειναι αρχικοποιημένος ε? Eιναι δηλαδη διευθυνση στην οποια ο δεικτης δειχνει
και οχι διευθυνση στην οποια θα "δουλευε" πχ αλλαζοντας τα περιεχομενα της και αρα επρεπε να βαλουμε και τον τελεστη & ας πουμε .. ε?

2.
Κώδικας: Επιλογή όλων
&(*p).age


αυτο ειναι η διευθυνση του στοιχειου age?
To (*p).age ειναι απο μονο του στοιχειο γιατι? Γιατι αμα το δωσεις μεσα σε μια printf αυτο θα σου δωσει ενα στοιχειο - εναν ακεραιο- ... αρα μαζι με το & δεν ειναι τιποτε αλλο απο διευθυνση σαν να λεγαμε οκ?

Κώδικας: Επιλογή όλων
int x;
&x => (& = ΔΙΕΥΘΥΝΣΗ) + x = στοιχειο) οποτε ολο μαζι διευθυνση στοιχειου


καταλαβαινεις πως το ρωταω...

3.
Ενα ονομα δομής θα μπορούσε να αποτελεί δείκτης προς την ιδια την δομη οπως και στους πινακες?

4. Λενε επισης πως για λογους προτεραιοτητας μπαινουν οι παρενθεσεις στο
Κώδικας: Επιλογή όλων
(*p).age


και πως αν δεν γινοταν αυτο... ο τελεστης (.) εχει μεγαλυτερη προτεραιοτητα αρα θα λαμβανε αυτον υποψη το συστημα και οχι τον (*)
που δεν ειναι λεει αυτο που θελουμε... και τι δηλαδη σημαινει αυτο???? Υπαρχει καμια εξηγηση ή να μην το σκαλισω γιατι θα μπλεξω?

ειναι καίριες ερωτήσεις!! ΕΥχαριστω εκ των προτερων.