Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

strlen() vs. sizeof() in C: Unterschiede verstehen und richtig anwenden

Was ist strlen()?

In C gibt strlen() die Anzahl der Zeichen in einem null-terminierten String zurück, ohne das abschließende '\0' zu zählen. Es werden Buchstaben, Ziffern, Symbole und Leerzeichen gezählt.

Dieser Artikel erklärt die Rolle von strlen(), sizeof() und warum sie sich unterschiedlich verhalten.

Was ist sizeof()?

Der sizeof-Operator liefert die Größe seines Operanden in Bytes. Er wird zur Kompilierzeit für statische Typen und zur Laufzeit für Variable-Length-Arrays evaluiert. Er gilt für alle C-Datentypen, einschließlich Primitiven, Zeigern, Structs und Unions. Das Ergebnis ist vom Typ size_t, ein vorzeichenloser Integer-Typ, der groß genug ist, um die Größe des größten Objekts zu halten.

Da die Größe von Typen wie int oder double zwischen 32-Bit- und 64-Bit-Systemen variieren kann, gewährleistet sizeof Portabilität.

Wesentliche Unterschiede

Syntax von strlen()

size_t length = strlen(my_string);

Hier ist my_string ein Zeichenarray oder Zeiger auf einen null-terminierten String.

Beispiel für strlen()

#include <stdio.h>
#include <string.h>
int main() {
    char strng[] = "January";
    printf("Länge des Strings: %zu\n", strlen(strng));
    return 0;
}

Ausgabe:

Länge des Strings: 7

Syntax von sizeof()

1) sizeof(type)

sizeof(type) liefert die Größe des angegebenen Typs.

#include <stdio.h>
#define my_sizeof(type) ((char*)(&type+1) - (char*)&type)
int main() {
    double x;
    printf("%zu", my_sizeof(x));
    return 0;
}

Ausgabe:

8

2) sizeof(variable)

Variablennamen übergeben, um ihren Speicherbedarf zu ermitteln.

#include <stdio.h>
int main() {
    printf("sizeof(char) = %zu\n", sizeof(char));
    return 0;
}

Ausgabe:

sizeof(char) = 1

3) sizeof(expression)

Größe des Ausdruckstyps ermitteln, ohne dessen Wert zu berechnen.

#include <stdio.h>
int main() {
    char p = 'S';
    double q = 4.65;
    printf("Größe von Variable p: %zu\n", sizeof(p));
    printf("Größe eines Ausdrucks: %zu\n", sizeof(p+q));
    int a = (int)(p+q);
    printf("Größe explizit konvertiert: %zu\n", sizeof(a));
    return 0;
}

Ausgabe:

Größe von Variable p: 1
Größe eines Ausdrucks: 8
Größe explizit konvertiert: 4

Visueller Vergleich

strlen() vs. sizeof() in C: Unterschiede verstehen und richtig anwenden

Nachfolgend eine tabellarische Gegenüberstellung:

Merkmalstrlen()sizeof()
Header-Dateistring.hKeine nötig (eingebauter Operator)
ZweckStringlänge berechnen (ohne Null)Speichergröße von Typ/Variable bestimmen
Rückgabetypsize_tsize_t
EvaluationszeitpunktLaufzeit (kann String durchlaufen)Kompilierzeit (außer VLA)
Anwendbar aufNur Zeichenarrays/Zeiger auf null-terminierte StringsAlle Datentypen und Ausdrücke

Wann was verwenden?

Die Beachtung dieser Richtlinien sorgt für effizienten, portierbaren und wartbaren C-Code.

C Sprache

  1. Asbest vs. Glasfaser: Wichtige Unterschiede, Anwendungen und Sicherheitsaspekte
  2. Structures vs. Unions in C: Ein praktischer Leitfaden
  3. C# vs C++: Klare Vergleich von Features, Performance und Use Cases
  4. C vs. C++: Wichtige Unterschiede & Wann welche Sprache wählen
  5. C vs. Java: Umfassender Vergleich von Features, Geschichte und Anwendungen
  6. Python vs. JavaScript: Wichtige Unterschiede, Features und Entscheidungshilfen
  7. Python vs. Ruby: Umfassender Vergleich von Features, Vorteilen und Einsatzgebieten
  8. DC- vs. AC-Motoren: Wichtige Unterschiede & Kaufberatung
  9. Hartlöten vs. Weichlöten: Metallurgische Unterschiede und Praxiseinsatz
  10. Zweitakt- vs. Viertaktmotoren: Wichtige Unterschiede erklärt