Разлика между strlen() и sizeof() за низ в C
Какво е strlen()
strlen() е функция за намиране на дължината на низ. Той брои общия брой символи, които са представени в низ, като елиминира нулевия знак. Общият брой знаци в низа включва азбуки, специални знаци и числа с празни интервали.
Какво е sizeof()
Sizeof() е функция, която се използва за изчисляване на размера на нейния операнд. Връща размера на определена променлива. Тази функция може да се приложи към всеки тип данни, съдържащ примитивни типове като цяло число и видове указатели, типове с плаваща запетая, структура или обединение. Резултатът от програмата, съдържаща sizeof(), може да е различен в 32-битовата и 64-битовата система.
КЛЮЧОВИ РАЗЛИКИ
- Методът Strlen се използва за намиране на дължината на масив, докато методът sizeof() се използва за намиране на действителния размер на данните.
- Strlen() брои броя знаци в низ, докато sizeof() връща размера на операнд.
- Strlen() търси нулевата стойност на променливата, но sizeof() не се интересува от стойността на променливата.
- Върнатата стойност в strlen() е long int, от друга страна върнатата стойност в sizeof() е unsigned int.
Синтаксис на strlen()
strcount = strlen(my_string);
Тук my_string е променлива за масив от знаци.
Пример за strlen()
В програмата на C по-долу сме декларирали низова променлива от тип char. Променливата strng се предава като аргумент на функцията strlen(), за да се намери дължината на низ.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Изход:
Length of given string is: 7
Синтаксис на sizeof()
Синтаксис 1)
sizeof(тип): Тип= рефериран тип
Пример за sizeof(type):
В кода по-долу &type дава адреса на променливата (двойно x). Той се увеличава с 1, което дава адреса, където можете да съхранявате следващата променлива от тип x.
Преобразуването на x в char* и вземането на разликата ще ви позволи да знаете общия брой променливи от тип char, съхранени в паметта. Използвахме getchar() за четене на символ.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
изход:
8
Синтаксис 2)
sizeof(име на променлива): Variable-name= име на променливата, която искате да определите размера.
В програмата C по-долу отпечатваме типа данни size char. Printf изразът съдържа функция sizeof с аргумент char.
Пример за sizeof(име-на-променлива):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Изход:
sizeof(char) = 1
Синтаксис 3)
sizeof(израз): Израз = Израз, който трябва да оцените.
Пример за sizeof(израз):
В програмата по-долу първо изчисляваме и отпечатваме размера на променливата. След това оценяваме израза, съхраняваме го в променлива a и показваме резултата в израза printf.
#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; }
Изход:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Разлика между strlen() и sizeof()
Ето важните разлики между strlen() и sizeof():
Strlen() | Sizeof() |
---|---|
Strlen() е предварително дефинирана функция, която е дефинирана в заглавен файл, известен като string.h. | Sizeof() е унарен оператор или израз по време на компилиране, който изчислява количеството памет, заета от променлив. |
Този метод се използва за намиране на дължината на масив от низ или знак. | Този метод се използва за намиране на действителния размер на данните (разпределени) в байтове. |
Той брои броя знаци в низ, като елиминира нулевите стойности. | Връща размера на операнд, а не дължината на низа (включително нулеви стойности). |
Той разпределя памет по време на изпълнение и търси нулевата стойност на променливата. | Sizeof() не се интересува от стойността на променливата. |
Функцията Strlen() работи само със символни низове | Функцията Sizeof() връща количеството разпределена памет в байтове. |
Върнатата стойност в strlen() е long int. | Върнатата стойност в sizeof() е unsigned int. |
Има само един синтаксис на strlen(), който е int strlen(const char *str); | Има три синтаксиса на sizeof() 1) sizeof(тип), 2) sizeof(име-на-променлива) и 3) sizeof(израз): |