Determinarea lungimii liniei C și - preaplin stivă în limba rusă

Principala diferență este că funcția strlen calculează lungimea șirului, iar operatorul sizeof la calcularea lungimii liniei nu are nimic de-a face. Operatorul sizeof este utilizat pentru a defini dimensiunea memoriei ocupată de entitate. Atunci când se lucrează cu rânduri acesta poate fi aplicat numai rânduri definite pe stivă și linii constante. Lucrările mecanism poate fi văzut în exemplul următor:







Răspuns 24 noiembrie, la 12:52 '10

sizeof - un operator este un limbaj folosit pentru a defini tipul de dimensiunea datelor în octeți. Valoarea expresiei folosind determinată sizeof în timpul compilării codului, cu excepția unor cazuri, de exemplu, pentru șiruri de lungime variabilă așa cum este definită în C99.

strlen - este o funcție de bibliotecă C standard, utilizată pentru a determina lungimea unei linii de încheiere zero. Valoarea expresiei folosind un apel strlen este determinată în timpul rulării.







Răspuns 25 noiembrie la 11:28 '10

Dați-mi voie să rețineți că sizeof returnează dimensiunea în octeți. Ie de obicei, lungimea maximă a șirului care se încadrează într-o matrice char'ov.

strlen - este o funcție de biblioteca standard pentru a determina lungimea șirului 0 terminate. Returnează numărul de caractere fără a pune capăt 0. Cu alte cuvinte, cantitatea reală de memorie ocupată de un rând, cel puțin egală cu rezultatul efectuării strlen + 1 octeți.

Probleme actuale apar, de obicei, atunci când se utilizează Unicode, adică cu tipurile sau WCHAR TCHAR și corespunzătoare f-tiile. Deoarece simbolurile Unicode nu ocupă 1 octet și 2. Și astfel să se amestece numărul de caractere și dimensiunea memoriei lor, se pare, nu este în valoare de ea. Și având în vedere că multe programe vor avea, mai devreme sau mai târziu pentru a reface - este mai bine să se stabilească posibilitatea de a face acest lucru. Ie totală - amintiți-vă că manipularea șir Fct necesită de obicei rezoluție linie în simboluri, și funcționarea memoriei Fct (sau dimensiunea maximă.) - de obicei în octeți.

Pentru a determina numărul maxim de elemente (adică caractere pe linie) sub MSVC am folosit _countof macro. Am crezut că a fost destul de convenabil.