Δημοσιεύτηκε: 01 Φεβ 2012, 15:49
οκ!!! Λοιπον εχω καποιες αποριες ομως απο χθες...
Καταρχην μου λεγανε παλι σε ενα τσατ πως αν ορισεις εναν πινακα πχ int array[2]; ξερω γω το array απο μονο του δεν ειναι
ο δεικτης στο 1ο στοιχειο... κατι τετοιο ειναι υπερ-απλοποιημένο. Ειναι απλα ενας προσδιοριστης... το value του δεικτη του array ειναι λεει ο δεικτης
αυτος εννοουσε ας πουμε το *array γιατι το λεει δεικτη ομως αυτο ρε συ? Αυτο ειναι ενας int δεν ειναι δεικτης.... ο δεικτης ειναι το array που δειχνει
στο 1ο στοιχειο το array[0] και αν τον κανεις deference δινει αυτο που εχεις αρχικοποιησει (εδω 0 γιατι δεν εχουμε αρχικοποιησει τιποτα)
ΠΑΕΙ ΑΥΤΟ.... μετα δευτερον λες οτι τα C-strings ειναι δεικτες στον 1ο χαρακτηρα.... εδω εχω ενα κολλημα με τον ορισμο... γιατι αν με ρωτουσε καποιος αυτο δεν θα του ελεγα οτι ειναι δεικτες θα του ελεγα θες να μαθεις τι ειναι ενα C- sting? παρε το ονομα σου βαλτο σε εναν πινακα χαρακτηρων και στο τελος κοτσαρισε του και ενα '\0' και εισαι ετοιμος. Και αν θες τωρα να εχεις προσβαση σε αυτο θα χρησιμοποιησεις εναν δεικτη που δειχνει στον 1ο χαρακτηρα αυτου του string μιας και η σημαια για το τελος υπάρχει ('\0') .
και τριτον.... εδω
- Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
typedef struct customer /*xreiazetai kai i leksi customer wste na kserei mesa sto swma
tou se ti tupo anaferetai o deiktis next */
{
int id;
struct customer *next;
} Customer;
void list_print(Customer *head);
void list_prepend(Customer **head , int id);
int main ()
{
int static id;
Customer *head ,*newnode;
head = NULL;
newnode=NULL;
for(id=1; id<10; id++)
{
list_prepend(&head,id);
}
list_print(head);
free(newnode);
free(head);
return 0;
}
void list_prepend(Customer **head , int id)
{
Customer *newnode= calloc(1,sizeof(Customer));
if(!newnode)
return;
newnode->id=id;
newnode->next=(*head);
(*head)=newnode;
return;
}
void list_print(Customer *head)
{
while(head)
{
printf("%d \n",head->id);
head=head->next;
}
putchar('\n');
return;
}
με σκαλωνει λιγο που στην κληση εχεις :
- Κώδικας: Επιλογή όλων
list_prepend(&head,id);
το head εδω ειναι διπλος δεικτης..... γιατι &head? Αυτο δεν δινει την διευθυνση ας πουμε του ιδιου του δεικτη? Οχι αυτη στην οποια δειχνει.