Hallo Allerseits!
Der Code sollte das Problem das ich hab verdeutlichen:
pointer.c
_______________
float* pointerRückgabe(){
float* pointer = NULL;
float array[...][...] = Werte initilisieren...
....
pointer = array;
return pointer;
}
____________________
In dieser Methode kann ich den Pointer problemlos dereferenzieren z.B. mit:
for(i=0....)
printf("%f", *(pointer+i));
Sobald ich aber der rückgabewert nutze geht die nur teilweise:
main.c
__________________
float* pointerRückgabe();
int main(){
...
float *pointerMain = NULL;
...
pointerMain = pointerRückgabe();
...
}
_____________________
dann kann ich nur eine bestimmte Anzahl von Werten(z.B bei 4 = 2 oder 14 = 5)
korrekt dereferenzieren mit:
for(i=0....)
printf("%f", *(pointerMain+i));
Das ich alle Werte korrekt erhalte funktioniert nur so, aber auch nur einmal:
printf("%f ; %f ; %f ; ..." ,*(pointerMain), *(pointerMain+1), *(pointerMain+2),....);
also sobald er einmal dereferenziert verliert er scheinbar seine Adresse.
Schlimm wird es erst wenn ich ihn dann nochmal per parameter übergeben möchte
main.c
__________________
float* pointerRückgabe();
void pointerParameter(float*);
int main(){
...
float *pointerMain = NULL;
...
pointerMain = pointerRückgabe();
pointer parameter(pointerMain);
...
}
Dann krieg ich nur ein korrekten Wert (den letzten bei einer länge Arraylänge von 14):
pointerparameter.c
__________________________
void pointerParameter(float* prm){
....
prinf("%f", *(prm+13));
}
____________________________
vielleicht ist es auch nur zufall dass dieser Wert stimmt!
Hab ich einen Denkfehler und Pointer funktkionieren nicht so?
Danke!
Der Code sollte das Problem das ich hab verdeutlichen:
pointer.c
_______________
float* pointerRückgabe(){
float* pointer = NULL;
float array[...][...] = Werte initilisieren...
....
pointer = array;
return pointer;
}
____________________
In dieser Methode kann ich den Pointer problemlos dereferenzieren z.B. mit:
for(i=0....)
printf("%f", *(pointer+i));
Sobald ich aber der rückgabewert nutze geht die nur teilweise:
main.c
__________________
float* pointerRückgabe();
int main(){
...
float *pointerMain = NULL;
...
pointerMain = pointerRückgabe();
...
}
_____________________
dann kann ich nur eine bestimmte Anzahl von Werten(z.B bei 4 = 2 oder 14 = 5)
korrekt dereferenzieren mit:
for(i=0....)
printf("%f", *(pointerMain+i));
Das ich alle Werte korrekt erhalte funktioniert nur so, aber auch nur einmal:
printf("%f ; %f ; %f ; ..." ,*(pointerMain), *(pointerMain+1), *(pointerMain+2),....);
also sobald er einmal dereferenziert verliert er scheinbar seine Adresse.
Schlimm wird es erst wenn ich ihn dann nochmal per parameter übergeben möchte
main.c
__________________
float* pointerRückgabe();
void pointerParameter(float*);
int main(){
...
float *pointerMain = NULL;
...
pointerMain = pointerRückgabe();
pointer parameter(pointerMain);
...
}
Dann krieg ich nur ein korrekten Wert (den letzten bei einer länge Arraylänge von 14):
pointerparameter.c
__________________________
void pointerParameter(float* prm){
....
prinf("%f", *(prm+13));
}
____________________________
vielleicht ist es auch nur zufall dass dieser Wert stimmt!
Hab ich einen Denkfehler und Pointer funktkionieren nicht so?
Danke!