Normalerweise erklären wir einen Funktionsprototyp in Header-Datei wie:C: Fragen zu Funktionsprototyp in Header-Datei
void function();
Kann diese Funktion jedes Argument nehmen?
Wenn die Funktion Integer als Argument verwendet, schreiben wir:
void function(int);
Aber manchmal sehe ich Leute schreiben:
void function(int*);
Was die
*
ist hier?Wenn die Funktion kann ein einzelnes Argument von mehreren Typen, wie Integer oder doppelt, was sollen wir tun?
Antwort
-
Normalerweise erklären wir einen Funktionsprototyp in Header-Datei wie:
void function();
Kann diese Funktion jedes Argument nehmen?
Es ist nicht spezifiziert, welche Argumente diese Funktion benötigt.
-
Wenn die Funktion Integer als Argument, wir schreiben:
Leere Funktion (int);
Aber manchmal sehe ich Leute schreiben: void function (int *);
Was macht die
*
hier?Dies ist ein pointer zu einem
int
. -
Wenn die Funktion mehrere Arten von Argumenten annehmen kann, wie integer und doppelt, was sollen wir tun?
int
unddouble
sind inkompatible Typen. Sie können keine Funktion annehmen, die die eine oder die andere übernimmt. Sie können nicht zwei verschiedene Funktionen mit zwei verschiedenen Typen definieren, die jedoch denselben Namen haben.
für 1 .: Es ist nicht spezifiziert, welche Argumente diese Funktion annehmen wird. Ist das der Fall, wo wir nicht wissen, welche Art es nehmen wird, oder es kann einfach kein Argument nehmen? – kyle
@ kyle Wir tun nicht, welche Art von Argument wird es dauern. Um zu erklären, dass 'function' keine Argumente annehmen soll, müssen Sie das Schlüsselwort' void' verwenden: 'void function (void);' – Alexander
Für 3 sind überladene Funktionen in C nicht erlaubt. –
Die Frage selbst nicht richtig formuliert ist. Dies ist überhaupt kein Prototyp. Dies ist eine Nicht-Prototyp Funktionsdeklaration.
Es sagt nichts über Funktionsargumente aus, was genau unterscheidet es vom Prototyp. Die so deklarierte Funktion kann mit beliebigen Argumenten aufgerufen werden.
Wenn jedoch die im Aufruf verwendeten Argumente (nach üblichen arithmetischen Konvertierungen) nicht mit den verwendeten Parametern der tatsächlichen Definition (in Anzahl und Typ) übereinstimmen, ist das Verhalten nicht definiert. Wenn die tatsächliche Funktion als variadic definiert ist (hat
...
in der Parameterliste), ist das Verhalten nicht definiert.Dies sind Prototypen. Die erste besagt, dass die Funktion einen einzelnen
int
Parameter hat. Die zweite sagt, dass es einen einzigenint *
Parameter (einen Zeiger aufint
) hat. Es ist nichts besonderes, wenn Sie wissen, was Zeiger sind.Es ist nicht klar, was gefragt wird. "Was sollen wir machen?" Ich weiß nicht ... Fliege nach Hawaii und verbringe fünf Tage damit, nackt im Regen zu tanzen.
Diese Funktion wird als Einnahme mehrere Argumente von verschiedenen Arten erklärt
void foo(int, double, char, short *);
Es gibt nichts Besonderes. Wenn Sie etwas anderes gemeint haben - klären Sie die Frage.
- 1. C Funktionsprototyp mit Struct-Argument
- 2. Fragen zu Variablen in C
- 3. Funktionsprototyp in Perl
- 4. Funktionsprototyp in Header-Dateien
- 5. Unterschiedlicher Parametername im Funktionsprototyp
- 6. Fragen zu C++ virtuelle Vererbung
- 7. Funktionsprototyp für unbenutzte Funktion
- 8. C# Fragen mehrere Fragen in einer Schleife
- 9. Signalhandler für Variablen installieren, die in einer Headerdatei in C
- 10. Verständnis Funktionsprototyp und __proto__
- 11. Funktionsprototyp Warnen gibt nicht gefunden
- 12. Warum ist es zulässig, eine Headerdatei zweimal in C++ einzuschließen?
- 13. Wie zeigt man einen Funktionsprototyp in Emacs?
- 14. 'auto' nicht in Funktionsprototyp erlaubt mit Clang
- 15. Spezifische Fragen zu C# Dispose Pattern
- 16. Fragen zu C Funktionsprototypen und Compilation
- 17. Fragen zu C++ - Nicht-POD-Verbindungen
- 18. C# Fragen zu Invoke, Invereequired & Multithreading
- 19. C# Namespace Fragen
- 20. Einige allgemeine C Fragen
- 21. Mehrere grundlegende C Fragen
- 22. C# Concurrent List Fragen
- 23. Fragen über C-Bitfelder
- 24. 2 C Enum Fragen
- 25. Funktionsprototyp für eine zweidimensionale Anordnung
- 26. C++ - Fragen über Funktionszeiger
- 27. C# Asynchronous Sockets Fragen
- 28. Einige Fragen zu IPv6
- 29. Silverlight Fragen/Fragen
- 30. Julia in C# einbetten: Garbage Collector in C# umwandeln Fragen und Fragen
1: Nein, 2: Lesen Sie, was ein ** Zeiger ** ist. 3: EDIT: meinst du "Funktion, die * sowohl * integer und double (' void function (int, double) ') oder Funktion, die * entweder * nehmen könnte? Im zweiten Fall, schaue auf ** function overloading * * Sehr nützlich – Fureeish
@Fureeish Funktion, die entweder. Ich dachte 1. bedeutet, kann jede Art und jede Anzahl von Argumenten vor. – kyle
@Fureeish ist Zeiger etwas ähnlich zu Array? Ich sehe, dass Leute schreiben 'int *' in Prototyp, aber in der Hauptdatei nimmt die Funktion ein ganzzahliges Array. – kyle