Різниця між 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() 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(вираз):