Разница между strlen() и sizeof() для строки в C
Что такое стрлен()
strlen() — функция для определения длины строки. Он подсчитывает общее количество символов, представленных в строке, исключая нулевой символ. Общее количество символов в строке включает буквы алфавита, специальные символы и цифры с пробелами.
Что такое sizeof()
sizeof() — это функция, которая используется для вычисления размера своего операнда. Он возвращает размер конкретной переменной. Эту функцию можно применить к любому типу данных, включая примитивные типы, такие как целочисленные и типы указателей, типы с плавающей запятой, структура или объединение. Вывод программы, содержащей sizeof(), может отличаться в 32-битной и 64-битной системе.
ОСНОВНЫЕ ОТЛИЧИЯ
- Метод Strlen используется для определения длины массива, тогда как метод sizeof() используется для определения фактического размера данных.
- Strlen() подсчитывает количество символов в строке, а sizeof() возвращает размер операнда.
- Strlen() ищет нулевое значение переменной, но sizeof() не заботится о значении переменной.
- Возвращаемое значение в strlen() — это long int, а возвращаемое значение в sizeof() — беззнаковое целое.
Синтаксис strlen()
strcount = strlen(my_string);
Здесь my_string — это переменная массива символов.
Пример strlen()
В приведенной ниже программе на C мы объявили строковую переменную типа char. Переменная Strng передается в качестве аргумента функции strlen() для определения длины string.
#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(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(выражения):
В приведенной ниже программе мы сначала вычисляем и печатаем размер переменной. После этого мы оцениваем выражение, сохраняем его в переменной 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() — это предопределенная функция, которая определена в заголовочном файле, известном как string.h. | Sizeof() — это унарный оператор или выражение времени компиляции, которое вычисляет объем памяти, занимаемой объектом. переменная. |
Этот метод используется для определения длины массива строк или символов. | Этот метод используется для определения фактического размера данных (выделенных) в байтах. |
Он подсчитывает количество символов в строке, исключая нулевые значения. | Он возвращает размер операнда, а не длину строки (включая нулевые значения). |
Он выделяет память во время выполнения и ищет нулевое значение переменной. | Sizeof() не заботится о значении переменной. |
Функция Strlen() работает только со строками символов. | Функция Sizeof() возвращает объем выделенной памяти в байтах. |
Возвращаемое значение в strlen() — long int. | Возвращаемое значение в sizeof() — беззнаковое целое. |
Существует только один синтаксис функции strlen(): int strlen(const char *str); | Существует три синтаксиса sizeof(): 1) sizeof(тип), 2) sizeof(имя-переменной) и 3) sizeof(выражение): |