ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
3273
3273
EMPFEHLEN
-
Hi
Mein Programm sieht etwa so aus:
Die Funktion mit dem Pointern funktioniert problemlos.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include <stdio.h> void test(char chr) { printf("test %c", chr); return; } void main () { void (*test1)(char); void (*test2)(char); void (*test3)(char); test1 = (&test); test2=test; test3=*test; printf("%d\r\n", test1); test1('a'); return; }
In der Zeile printf("%d\r\n", test1); gibt er mir anscheinend auch wie erwartet die Adresse der Funktion auf.
Nun möchte ich jedoch wissen, welches Byte am Anfang der Funktion steht.
Bei normalen Pointern könnte ich mir also statt "test1" also "*test1" ausgeben; ich erhalte jedoch stattdessen immer wieder nur die Adresse der Funktion.
Gruß
Tim
-
31.08.05 16:11 #2
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Ist nciht der Name der Funktion gleichzeitig ein Pointer auf die Funktion?
mfg
umbrasaxum
-
31.08.05 16:21 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Naja, also ich meine was versprichst du denn dir davon? Was soll deiner Meinung nach das erste Byte auf das der Funktionspointer zeigt für einen Sinn/Wert haben?
Man kann keine Funktionspointer dereferenzieren.
Aber, man kann natürlich wild umher-casten:Code :1
printf ("%d\n", (int)*(char*)test1);
In C/C++ muß der Rückgabetyp der Funktion main int sein.
Zitat von http://de.wikibooks.org/wiki/C-Programmierung:_FAQ
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
Dein "umher-casten" scheint zu funktionieren; mich hat einfach interessiert, wie das so funktioniert.
Danke auch für den Tipp mit dem void/int; leider gibt Visual C++ nicht einmal eine Warnung aus.
Gruß
Tim
-
31.08.05 21:27 #5
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Auch wenn du nicht ganz unrecht hast, solltest du nicht dem Compiler die Schuld an deinem schlechten Programmierstil geben.... leider gibt Visual C++ nicht einmal eine Warnung aus.
mfg
umbrasaxum
-
Hallo,
Danke auch für den Tipp mit dem void/int; leider gibt Visual C++ nicht einmal eine Warnung aus.ich glaube das war auch nicht des Posters Absicht, er hat es lediglich bedauertsolltest du nicht dem Compiler die Schuld an deinem schlechten Programmierstil geben.
das ihm der Compiler des VSs nicht drauf hin gewiesen hat...
P.S. Wenn man das mit dem Rückgabewert nicht oder falsch gelernt bekommt
deutet das noch lange nicht auf schlechtne Programmierstil hin.
Gruß
RedWingGeändert von RedWing (31.08.05 um 21:44 Uhr)
"I'm not deaf, I'm ignoring you"
----
-
31.08.05 22:08 #7
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
<klugscheisser-modus: an>
Zitat von RedWing
es muss natürlich korrekt heißen: "gelehrt" und nicht "gelernt"...
<klugscheisser-modus: aus>If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Zum Glück musst ich noch nicht an der PISA Studie teilnehmen
Das mit dem Modus muss ich mir merken
"I'm not deaf, I'm ignoring you"
----
Ähnliche Themen
-
Funktionspointer in C
Von blackbirdthefirst im Forum C/C++Antworten: 8Letzter Beitrag: 07.08.06, 18:45 -
[VC6] Funktionspointer in einem struct
Von Amon-Rê im Forum C/C++Antworten: 1Letzter Beitrag: 18.01.05, 11:08 -
Funktionspointer
Von Andreas Witt im Forum C/C++Antworten: 7Letzter Beitrag: 04.01.05, 16:12 -
Funktionspointer
Von HansKloss im Forum C/C++Antworten: 5Letzter Beitrag: 15.12.04, 11:14 -
Funktionspointer
Von Schtehffi im Forum C/C++Antworten: 1Letzter Beitrag: 30.03.04, 07:36





Zitieren
Login






