warum ich so werde; Wenn ich die gesamten Daten von einem Array in ein anderes Array übertragen möchte, wie kann ich das tun?
Schlagen Sie mich vor, wenn jemand weiß.
Sie können die Größe eines Arrays in C nicht ohne weitere Informationen ermitteln.
– m0skit0
23. Februar 2012 um 12:31 Uhr
@Oli Charlesworth: Ich habe in Google gesucht, aber ich habe den von Ihnen bereitgestellten Link nicht erhalten. Danke für die Bereitstellung;
– Alishaik786
23. Februar 2012 um 12:41 Uhr
Sie können die Größe eines Array-Parameters nicht ermitteln.
– Heiße Licks
7. September 2014 um 13:50 Uhr
entspannen
Arrays zerfallen zu Zeigern in Funktionsaufrufen. Es ist nicht möglich, die Größe eines Arrays zu berechnen, das nur als Zeiger dargestellt wird, einschließlich using sizeof.
Sie müssen ein explizites Argument hinzufügen:
void show(int *data, size_t count);
In dem Anruf können Sie verwenden sizeof um die Anzahl der Elemente für tatsächliche Arrays zu berechnen:
Beachten Sie, dass sizeof gibt Ihnen die Größe in Einheiten von chardaher die Teilung durch das Wesentliche sizeof (int) benötigt wird, oder Sie würden einen viel zu hohen Wert erhalten.
Beachten Sie auch, als Punkt des Interesses und der Sauberkeit, dass sizeof ist nicht eine Funktion. Die Klammern werden nur benötigt, wenn das Argument ein Typname ist, da das Argument dann ein Cast-ähnlicher Ausdruck ist (z sizeof (int)). Sie können oft davonkommen, ohne tatsächliche Typen zu nennen, indem Sie dies tun sizeof auf Daten statt.
show(arr, sizeof arr / sizeof *arr);
– Soran
5. September 2014 um 18:21 Uhr
@Soran Danke, behoben!
– abschalten
7. September 2014 um 13:43 Uhr
Obwohl ich denke, dass dies die beste allgemeine Lösung ist – dh die Länge und das Array übergeben -, denke ich, dass es auch erwähnenswert ist, dass für statische Arrays (dh die Länge ändert sich während der Programmausführung nicht) die einfachste Lösung darin besteht, die Array-Größe festzulegen in den Quellcode mit einer Präprozessordefinition #define. ZB #define ARRAY_SIZE 5
– Rechnung
31. Mai 2015 um 20:42 Uhr
Aus diesem Grund werden beim Schreiben einer Funktion, die ein Array verwendet, zwei Parameter deklariert. einer, der ein Zeiger auf das Array ist, der andere, der die Größe des Arrays definiert.
show() nimmt die Adresse des Arrays, das auf 2 Bytes gespeichert ist. Betrachten Sie es als int *ar.
14006800cookie-checkWie bekomme ich die Länge eines Arrays in C? Ist “sizeof” eine Lösung? [duplicate]yes
Sie können die Größe eines Arrays in C nicht ohne weitere Informationen ermitteln.
– m0skit0
23. Februar 2012 um 12:31 Uhr
@Oli Charlesworth: Ich habe in Google gesucht, aber ich habe den von Ihnen bereitgestellten Link nicht erhalten. Danke für die Bereitstellung;
– Alishaik786
23. Februar 2012 um 12:41 Uhr
Sie können die Größe eines Array-Parameters nicht ermitteln.
– Heiße Licks
7. September 2014 um 13:50 Uhr