Stringi strlen () ja sizeof () erinevus C-s

Lang L: none (table-of-contents):

Anonim

Mis on strlen ()

strlen () on funktsioon stringi pikkuse leidmiseks. See loendab stringis esitatud tähemärke kokku, välistades nullmärgi. Stringis olevate märkide koguarv sisaldab tähestikke, erimärke ja numbreid koos tühikutega.

Selles erinevuses strleni () ja stringofoni sizeof () vahel C-õpetuses saate teada:

  • Mis on strlen ()
  • Mis on sizeof ()
  • Strlen () süntaks
  • () Suuruse süntaks
  • Erinevus strlen () ja sizeof () vahel

Mis on sizeof ()

Sizeof () on funktsioon, mida kasutatakse operandi suuruse arvutamiseks. See tagastab konkreetse muutuja suuruse. Seda funktsiooni saab rakendada mis tahes andmetüübile, mis sisaldab primitiivseid tüüpe nagu täis- ja osuti tüübid, ujukoma tüübid, struktuur või liit. Sizeof () sisaldava programmi väljund võib 32- ja 64-bitises süsteemis olla erinev.

PÕHISED VAHED:

  • Massiivi pikkuse leidmiseks kasutatakse Strleni meetodit, andmete tegeliku suuruse leidmiseks aga meetodit sizeof ().
  • Strlen () loeb stringis olevate märkide arvu, samas kui sizeof () tagastab operandi suuruse.
  • Strlen () otsib muutuja nullväärtust, kuid sizeof () ei hooli muutuja väärtusest.
  • Tagastusväärtus strlen () -is on pikk int ja teiselt poolt returnof väärtus sizeof () on int-all int.

Strlen () süntaks

strcount = strlen(my_string);

Siin on my_string tähemassiivi muutuja.

Näide strlen ()

Allpool olevas C-programmis oleme deklareerinud stringi muutuja tüüpi char. Strng muutuja on strlen () funktsiooni argumendina edastatud stringi pikkuse leidmiseks.

#include#includeint main(){char strng[] = "January";printf("Length of given string is: %lu\n", strlen(strng));}

Väljund:

Length of given string is: 7

() Suuruse süntaks

Süntaks 1)

sizeof (type): tüüp = viidatud tüüp

Näide sizeof (type) -st:

Allpool olevas koodis annab & type muutuja aadressi (topelt x). Seda suurendatakse 1-ga, mis annab aadressi, kuhu saate salvestada järgmise tüübi x muutuja.

Sisestades x tähemärki * ja võttes erinevuse, saate teada mällu salvestatud char-tüüpi muutujate koguarvu. Karakteri lugemiseks oleme kasutanud getcharit ().

#include#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)int main(){double x;printf("%ld", my_sizeof(x));getchar();return 0;}

väljund:

8

Süntaks 2)

sizeof (muutuja-nimi): Muutuja-nimi = selle muutuja nimi, mille suurust soovite määrata.

Allpool olevas C-programmis printime andmetüübi char char. Printf-lause sisaldab funktsiooni sizeof koos argumendiga.

Näide sizeof (muutuja-nimi):

#includeint main(){printf("sizeof(char) = %d\n\n", sizeof(char));return 0;}

Väljund:

sizeof(char) = 1

Süntaks 3)

sizeof (avaldis): avaldis = avaldis, mida peate hindama.

Näide sizeof (avaldis):

Alljärgnevas programmis arvutame ja printime kõigepealt muutuja suuruse. Pärast seda hindame avaldist, salvestame selle muutujasse a ja tulemust kuvame printf-lauses.

#includeint 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;}

Väljund:

Size of variable p : 1Size of an expression : 8Size of explicitly converted expression : 4

Erinevus strlen () ja sizeof () vahel

Siin on olulised erinevused strlen () ja sizeof () vahel:

Strlen () Sizeof ()
Strlen () on eelnevalt määratletud funktsioon, mis on määratletud päisefailis, mida nimetatakse stringiks.h. Sizeof () on unaaroperaator või kompileerimisaja avaldis, mis arvutab muutujaga hõivatud mälu hulga.
Seda meetodit kasutatakse stringi või märgi massiivi pikkuse leidmiseks. Seda meetodit kasutatakse andmete tegeliku (eraldatud) suuruse leidmiseks baitides.
See loeb stringis olevate märkide arvu, nullides nullväärtused. See tagastab operandi suuruse, mitte stringi pikkuse (sealhulgas nullväärtused).
See eraldab käituse ajal mälu ja otsib muutuja nullväärtust. Sizeof () ei hooli muutuja väärtusest.
Funktsioon Strlen () töötab ainult tähemärkidega Funktsioon Sizeof () tagastab baitides eraldatud mälumahu.
Tagastusväärtus strlen () -is on pikk int. Tagastusväärtus suuruses () on allkirjastamata int.
On ainult üks strlen () süntaks, mis on int strlen (const char * str); Seal on kolm süntaksit: sizeof () 1) sizeof (type), 2) sizeof (muutuja-nimi) ja 3) size (avaldis):