Warum C Array-Rückgabetypen nicht vereinfacht
Während Programmiersprachen wie Java einfache Array-Rückgabetypen zulassen, erfordert C einen komplexeren Ansatz . Dies ist nicht willkürlich, sondern ergibt sich aus grundlegenden Entscheidungen zum Sprachdesign.
Speicherverwaltung und Pass-by-Value vs. Pass-by-Reference
C unterscheidet zwischen Pass-by-Value und Pass-by-Value By-Value und Pass-by-Reference. Array-Namen sind im Wesentlichen Zeiger. Die Übergabe eines Arrays als Wert ergibt die Speicheradresse seines ersten Elements, die außerhalb des Funktionsbereichs verloren geht.
Im Gegensatz zu Java
Java verwendet angeblich Pass-by -value, verwendet aber „clevere“ Werte, bei denen es sich häufig um Speicheradressen handelt. Die praktischen Array-Rückgabetypen von Java werden durch automatische Speicherverwaltung und Zeigerumbruch erreicht, was zu einer verringerten Effizienz führt.
Cs Kompromisse
C wurde mit der Leistung erstellt eine Priorität, die automatische Speicherverwaltung zugunsten der Geschwindigkeit zu opfern. Die Rückgabe eines C-Arrays erfordert eine explizite Speicherzuweisung und Zeigerbehandlung, was den Ansatz von C widerspiegelt.
Template-Klassenausnahme
Template-Klassen können Arrays zurückgeben, weil sie Klassen verwenden. Die Rückgabe eines C-Arrays erfordert jedoch immer noch eine manuelle Speicherverwaltung.
Historischer Kontext
Der Erfinder von C, Bjarne Stroustrup, wollte die Leistung von C erhalten und gleichzeitig OOP-Funktionen integrieren Simula. Die Entscheidung, die automatische Speicherverwaltung einzuschränken, wurde aus Effizienzgründen getroffen.
Daher unterstützt C zwar Array-Rückgabetypen, priorisiert jedoch Speicherverwaltung und Geschwindigkeit gegenüber Komfort, im Gegensatz zum einfacheren Ansatz von Java.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3