Hallo!
ein gutes beispiel zu pointern ist folgendes (aus "C for Java Programmers" von J.Maassen - trotzdem ist mir immer noch einiges nicht klar..:
#include <studio.h>
int j, k;
int *ptr;
int main (void)
{
j = 1;
k = 2;
ptr = &k;
printf("j has value %d and is stored at %p\n", j, &j);
printf("k has value %d and is stored at %p\n", k, &k);
printf("ptr has value %p and is stored at %p\n", ptr, &ptr);
printf("value of integer ppointed to by ptr is %d\n", *ptr);
return 0;
}
/* OUTPUT */
j has value 1 and is stored at 0x804972c
k has value 2 and is stored at 0x8049734
ptr has value 0x8049734 and is stored at 0x8049730
value of integer pointed to by ptr is 2;
/* Output ende */
Soweit, so gut.
1) Warum aber kann ich gewisse pointer deklararationen nur VOR der Main Methode machen?
2) Bzw: Wie unterscheiden sich Deklarationen vor der Main Methode, sowie in der Main Methode?
Beispielsweise funktioniert folgendes nicht (warum?):
#include <blabla>
struct object p{
};
//zeiger auf object struct
struct interval *pa;
//zeiger pa zeige auf p
pa = &p;
main{
//blabla
}
geht nicht, fehlermeldung: "Redeclaration of 'pa' previously declared" aber:
#include<blabla>
struct object p{
};
//initialisieren + deklarieren aufeinmal
struct interval *pa = &p;
main{
//blabla
}
es ist mir bewusst, dass ein pointer, der deklariert wird, ohne vorher auf etwas zu referenzieren, probleme macht. aber ich befürchte, dass ich prinzipiell einiges noch immer nicht verstanden habe. vorallem, wie ich Pointer vor main, in main, und dynamisch behandle..
kennt jemand eine gute seite? bzw sieht jemand meine denkfehler?