Frage zu "Funktionen/Zeiger"
-
Moinsn Jungs und Mädels.
Kleine Frage.
Warum kann ich einer Funktion ein Zeiger übergeben, denn ich garned erstellt
habe?
Eigentlich müsste der Compiler da doch meckern oder nicht?
-
erklär das mal genauer..
-
z.b
int funktion (int *zeiger10)
zeiger10 gibt es aber garnicht.
Das ist doch so, als wenn man mit einer Variable arbeiten will, die es nicht
gibt, dann meckert der Compiler doch auch rum.
-
void foo(int i)
du sagst dass foo einen parameter übergeben bekommt. damit du damit auch etwas machen kannst geben wir dem parameter einen namen (sonst wäre es ja n bisschen kompliziert damit zu rechen)
lies dir nochmal n tutorial zu funktionen durch!
-
int funktion(int a) { return 2*a; }
ist dir an dieser Funktion irgendwas unklar? Wenn ja, geh erstmal ab von Zeigern und guck dir die Grundlagen von Funktionen nochmal an. Wenn nein, mach dir klar, dass Zeiger auch nur ein Datentyp ist.
-
Naja, also so steht das im Tutorial:
#include <stdio.h> #define PI 3.141592 void kreisflaeche(float *wert) { *wert = ( (*wert) * (*wert) * PI ); } int main() { float radius; printf("Berechnung einer Kreisfläche!!\n\n"); printf("Bitte den Radius eingeben : "); scanf("%f",&radius); /*Adresse von radius als Argument an kreisflaeche() */ kreisflaeche(&radius); printf("\nDie Kreisfläche beträgt : %f\n",radius); return 0; }
-
glaube nicht dass der Code jemandem weiterhilft
-
naja egal.
-
... void kreisflaeche(float *wert) { *wert = ( (*wert) * (*wert) * PI ); } ... kreisflaeche(&radius); ...
Geht hier eigentlich nur darum, dass du dir nen Return sparst, in dem du einfach den Inhalt der Adresse von "radius" änderst. Denn diese Adresse wird übergeben, und in der Funktion wird sie mit *wert dereferenziert, d. h. es wird mit dem Inhalt der Adresse gearbeitet. Die Variable Wert gibt es ja in dem Sinne auch nicht außerhalb der Funktion.
int funktion (int *zeiger10)
Da musst du einfach eine Adresse übergeben, egal ob es den Zeiger *zeiger10 außerhalb der Funktion gibt.