Різниця між strlen() і sizeof() для рядка в C
Що таке strlen()
strlen() — це функція для визначення довжини рядка. Він підраховує загальну кількість символів, представлених у рядку, усуваючи нульовий символ. Загальна кількість символів у рядку включає букви, спеціальні символи та цифри з пробілами.
Що таке sizeof()
Sizeof() — це функція, яка використовується для обчислення розміру свого операнда. Він повертає розмір певної змінної. Цю функцію можна застосувати до будь-якого типу даних, що містить примітивні типи, такі як integer і типи вказівників, типи з плаваючою комою, структура або об’єднання. Вихід програми, що містить 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(ім'я-змінної): Ім'я змінної= ім'я змінної, розмір якої ви хочете визначити.
У наведеній нижче програмі на 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(expression):
У наведеній нижче програмі ми спочатку обчислюємо та друкуємо розмір змінної. Після цього ми обчислюємо вираз, зберігаємо його в змінній 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(вираз): |