1. void
Das Schlüsselwort void repräsentiert das Konzept des „leeren Typs“. Der „leere Typ“ bedeutet hier jedoch nicht „irgendein Typ“, sondern bedeutet Nichtexistenz. Das heißt, C/C++ erlaubt Ihnen nicht, die Anweisung void a zu schreiben, und es gibt kein Ding vom Typ void.
void bedeutet „existiert nicht“, was sich in den beiden Anwendungen von void widerspiegeln kann:
1. Wenn void als Rückgabewerttyp einer Funktion verwendet wird, bedeutet dies, dass die Funktion einen Wert zurückgibt existiert nicht, d. h. die Funktion hat keinen Rückgabewert.
Zum Beispiel:
void FunctionNoReturn_0(std::string strName)
{
std::cout << strName << std::endl;
}
void FunctionNoReturn_1(std::string strName)
{
std::cout << strName << std::endl;
}
FunctionNoReturn_1 Obwohl in der Funktionskörper Es gibt keine explizite Return; Es gibt jedoch eine implizite Rückgabe, die darauf hinweist, dass die Funktion keinen Rückgabewert hat.
FunctionNoReturnType(void)
{
return 10;
}
In der C-Sprache wird jede Funktion, die den Rückgabewerttyp nicht einschränkt, vom Compiler als ganzzahliger Rückgabewert behandelt. anstatt keinen Wert zurückzugeben. Daher ist es richtig, dass die FunctionNoReturnType-Funktion 10 zurückgibt.
In C++ muss jede Funktion den Rückgabewerttyp einschränken, und es ist keine Rückgabewertbeschränkung zulässig. Daher meldet der C++-Compiler einen Fehler an FunctionNoReturnType.
2. Wenn void als Parametergrenze für eine Funktion verwendet wird, bedeutet dies, dass der Funktionsparameter nicht existiert, das heißt, die Funktion hat keinen formalen Parameter.
Zum Beispiel:
void FunctionNoArgument_0(void)
{
return;
}
void FunctionNoArgument_1()
{
return;
}
Hinweis: void FunctionNoArgument_1(); Dies bedeutet auch, dass es keine formalen Parameter gibt.
In der C-Sprache ist FunctionNoArgument_1(10); Der Compiler meldet keinen Fehler.
In der C-Sprache ist FunctionNoArgument_0(10); Der Compiler meldet einen Fehler.
In der C++-Sprache sind FunctionNoArgument_1(10); und FunctionNoArgument_0(10);
beide illegal. Der Compiler meldet einen Fehler.
Es spielt keine Rolle, ob in der C-Sprache kein Fehler vorliegt. Denn Parameter 10 hat keinen Einfluss auf das Ergebnis der Funktionsausführung. Allerdings kann die Codepflege versteckten Schaden verursachen und bei anderen zu Missverständnissen führen.
void*-Zeiger unterstützen nur einige begrenzte Operationen: Vergleich mit einem anderen Zeiger; Übergabe eines void-Zeigers an eine Funktion oder Rückgabe eines void*-Zeigers von dieser; . Ein void*-Zeiger darf nicht zur Manipulation des Objekts verwendet werden, auf das er zeigt. Beispielsweise darf ein void*-Zeiger nicht dereferenziert werden. Arithmetische Operationen auf void*-Zeigern sind nicht zulässig.
GNU C:
GNU C gibt an, dass arithmetische Operationen auf void*-Zeigern mit char* konsistent sind.
Prototyp: extern void *memcpy(void *dest, void *src, unsigned int count);
Verwendung: #include
Funktion: Anzahl der Kopien aus dem Speicherbereich, auf den verwiesen wird durch src-Bytes in den Speicherbereich, auf den dest zeigt.
Hinweis: Die Speicherbereiche, auf die src und dest zeigen, dürfen sich nicht überschneiden und die Funktion gibt einen Zeiger auf dest zurück.
Hinweis: Im Vergleich zu strcpy trifft memcpy nicht auf „