Nachfrage bei kleineren C-Programmen
-
Hallo.
Für die Uni soll ich einige kleinere C-Programme schreiben. Leider bin ich noch nicht so richtig fit darin und wollte mir mal meine Lösungsversuche absegnen lassen.
Legen Sie in main() zwei lokale Variablen vom Typ int (mit beliebigem Inhalt) an. Geben Sie den Inhalt der Variablen dezimal, sowie die jeweilige Speicheradresse hexadezimal aus.
#include <stdio.h> int main () { int zahl1 = 5; int zahl2 = 9; int *pointer1 = &zahl1; int *pointer2 = &zahl2; printf("zahl1 = %d\nzahl2 = %d\n\n", zahl1, zahl2); printf("Speicheradresse zahl1 = %x\nSpeicheradresse zahl2 = %x\n\n", pointer1, pointer2); }
Erweitern Sie Ihr Programm um eine Funktion unter(), die Sie aus main() aufrufen. Die Funktion soll zwei Integer als Parameter annehmen und zwei lokale Variablen vom Typ float enthalten. Geben Sie Inhalt und Adresse der lokalen Variablen und der Parameter sowie die Adresse der Funktion aus.
#include <stdio.h> int main () { unter(5,9); } int unter(int a, int b) { float z1; float z2; float *pointer1 = &z1; float *pointer2 = &z2; int *pointer3 = &a; int *pointer4 = &b; printf("Float1 = %d\nFloat2 = %d\nParameter1 = %d\nParameter2 = %d\n\n", z1, z2, a, b); printf("Speicheradresse Float1 = %x\n", pointer1); printf("Speicheradresse Float2 = %x\n", pointer2); printf("Speicheradresse Parameter1 = %x\n", pointer3); printf("Speicheradresse Parameter2 = %x\n", pointer4); }
Hier habe ich ein Problem, dass ich nicht weiß, wie ich die Adresse der Funktion ausgeben kann. Kann mir da vielleicht jemand auf die Sprünge helfen?
Dankeschön.
-
der name der funktion = adresse
-
Ein paar Dinge die mir auffallen:
- Der Formatschlüssel für float ist %f, der für (void) Zeiger ist %p
- wenn deine Funktion unter() einen Integer zurückgibt, was laut Aufgabe nicht gefordert ist, dann musst du auch einen Integer zurückgeben.
-
susi86 schrieb:
Legen Sie in main() zwei lokale Variablen vom Typ int (mit beliebigem Inhalt) an.
wenn du das wörtlich nimmst, dann darfst du die nicht initialisieren
-
Bouncer schrieb:
susi86 schrieb:
Legen Sie in main() zwei lokale Variablen vom Typ int (mit beliebigem Inhalt) an.
wenn du das wörtlich nimmst, dann darfst du die nicht initialisieren
Da hast du soweit eigentlich recht... werde mich da nochmal genauer erkundigen. Wie sieht es aber mit der Ausgabe der Adresse der Funktion aus? Irgendwie bekomme ich das noch nicht so richtig hin.
Viele Grüße und danke für die Antworten.
-
gibt anstatt pointer1 mal den namen der Funktion (ohne () ) als parameter bei printf an