Verschil tussen strlen() en sizeof() voor string in C
Wat is strlen()
strlen() is een functie om de lengte van een string te vinden. Het telt het totale aantal tekens dat in een string wordt gepresenteerd, waarbij het null-teken wordt geëlimineerd. Het totale aantal tekens in een string omvat alfabetten, speciale tekens en getallen, met spaties.
Wat is sizeof()
De sizeof() is een functie die wordt gebruikt om de grootte van de operand te berekenen. Het retourneert de grootte van een bepaalde variabele. Deze functie kan worden toegepast op elk gegevenstype, met primitieve typen zoals integer en aanwijzer typen, drijvende-kommatypen, structuur of vereniging. De uitvoer van het programma dat sizeof() bevat, kan verschillend zijn op het 32-bits systeem en het 64-bits systeem.
BELANGRIJKSTE VERSCHILLEN
- De Strlen-methode wordt gebruikt om de lengte van een array te vinden, terwijl de sizeof()-methode wordt gebruikt om de werkelijke gegevensgrootte te vinden.
- Strlen() telt het aantal tekens in een tekenreeks, terwijl sizeof() de grootte van een operand retourneert.
- Strlen() zoekt naar de nulwaarde van de variabele, maar sizeof() geeft niets om de variabelewaarde.
- De retourwaarde in strlen() is long int, terwijl de retourwaarde in sizeof() een niet-ondertekende int is.
Syntaxis van strlen()
strcount = strlen(my_string);
Hier is my_string een karakterarrayvariabele.
Voorbeeld van strlen()
In het onderstaande C-programma hebben we een stringvariabele van het type char gedeclareerd. De Strng-variabele wordt doorgegeven als argument van de functie strlen() om de lengte ervan te vinden snaar.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Output:
Length of given string is: 7
Syntaxis van sizeof()
Syntaxis 1)
groottevan(type): Type= waarnaar wordt verwezen
Voorbeeld van sizeof(type):
In de onderstaande code geeft &type het adres van de variabele (dubbele x). Het wordt verhoogd met 1, wat het adres geeft waar u de volgende variabele van type x kunt opslaan.
Door x in char* te typen en het verschil te nemen, kunt u het totale aantal variabelen van het type char kennen dat in het geheugen is opgeslagen. We hebben getchar() gebruikt om karakters te lezen.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
output:
8
Syntaxis 2)
sizeof(variabelenaam): Variabelenaam= naam van de variabele waarvan u de grootte wilt bepalen.
In het onderstaande C-programma drukken we het gegevenstype size char af. De Printf-instructie bevat de functie sizeof met argument char.
Voorbeeld van sizeof(variabelenaam):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Output:
sizeof(char) = 1
Syntaxis 3)
groottevan(uitdrukking): Expressie= Expressie die u moet evalueren.
Voorbeeld van sizeof(expressie):
In het onderstaande programma berekenen en afdrukken we eerst de grootte van de variabele. Hierna evalueren we de expressie, slaan deze op in variabele a en geven het resultaat weer in de printf-instructie.
#include<stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %d\n",sizeof(p)); printf("Size of an expression : %d\n",sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %d\n",sizeof(a)); return 0; }
Output:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Verschil tussen strlen() en sizeof()
Hier zijn de belangrijke verschillen tussen strlen() en sizeof():
Strlen() | De grootte van() |
---|---|
Strlen() is een vooraf gedefinieerde functie, die is gedefinieerd in een headerbestand dat bekend staat als string.h. | Sizeof() is een unaire operator of compile-time expressie die de hoeveelheid geheugen berekent die door een variabele. |
Deze methode wordt gebruikt om de lengte van een reeks tekenreeksen of tekens te vinden. | Deze methode wordt gebruikt om de werkelijke grootte van de gegevens (toegewezen) in bytes te vinden. |
Hiermee wordt het aantal tekens in een tekenreeks geteld en worden null-waarden geëlimineerd. | Hiermee wordt de grootte van een operand geretourneerd, niet de tekenreekslengte (inclusief null-waarden). |
Het wijst geheugen toe tijdens de runtime en zoekt naar de nulwaarde van de variabele. | Sizeof() geeft niets om de variabelewaarde. |
De functie Strlen() werkt alleen met tekenreeksen | De functie Sizeof() retourneert de hoeveelheid geheugen die is toegewezen in bytes. |
De retourwaarde in strlen() is long int. | De geretourneerde waarde in sizeof() is een niet-ondertekende int. |
Er is slechts één syntaxis van strlen() en dat is int strlen(const char *str); | Er zijn drie syntaxis van sizeof() 1) sizeof(type), 2) sizeof(variabelenaam) en 3) sizeof(expressie): |