sizeof()
Sizeof运算符是一个编译时一元运算运算符,可用于计算其操作数的大小。
- sizeof的结果是无符号整数类型,通常用size_t表示。
- sizeof可以应用于任何数据类型,包括基本类型(例如整数和浮点类型,指针类型)或复合数据类型(例如Structure,union等)。
strlen()
strlen()是C语言中的预定义函数,其定义包含在头文件“字符串.h”中。
- strlen()接受一个指向数组的指针作为参数,并在运行时从我们给它的地址遍历内存,以寻找一个NULL字符,并在找到一个字符计算它经过了多少个内存位置。
- strlen()的主要任务是计算数组或字符串的长度。
sizeof vs strlen()
- 类型: Sizeof运算符是一元运算运算符,而strlen()是C中的预定义函数
- 支持的数据类型: Sizeof给出任何类型(分配的)数据的实际大小(以字节为单位)(包括null值),而获得chars / 字符串数组的长度。
- 评估大小: sizeof()是一个编译时表达式,为您提供类型或变量类型的大小。它不在乎变量的值。
另一方面,Strlen为您提供C样式的以NULL终止的字符串的长度。 - 简介:两者几乎是不同的概念,并且用于不同的目的。
- 在C++上下文中:在C++中,您不需要它们中的任何一个。
C样式字符串的strlen()可以用C++ std :: 字符串代替。
C语言中的sizeof()作为malloc(),memcpy()或memset()之类的函数的参数,可以用C++替换(使用new,std :: copy()和std :: fill()或构造函数) 。
// C program to demonstrate difference // between strlen() and sizeof() #include
#include int main() { char str[] = "November"; printf("Length of String is %lu\n", strlen(str)); printf("Size of String is %lu\n", sizeof(str)); } 输出:
Length of String is 8 Size of String is 9
由于C语言中char的大小为1个字节,因此我们还发现strlen()的值比sizeof()小。
说明:我们知道,每个字符串以NULL字符(“ \ 0”)结尾。
strlen()搜索该NULL字符并计算传递的内存地址数,因此实际上它计算NULL字符之前的字符串存在的元素数,此处为8。
sizeof()运算符返回为传递给它的操作数分配的实际内存量。这里的操作数是一个字符数组,其中包含9个字符(包括Null字符),并且1个字符的大小为1个字节。因此,这里的总大小为9个字节。
尝试猜测以下程序的输出:#include
#include using namespace std; int main() { char a[] = {"Geeks for"}; char b[] = {'G','e','e','k','s',' ','f','o','r'}; cout << "sizeof(a) = " << sizeof(a); cout << "\nstrlen(a) = "<< strlen(a); cout<< "\nsizeof(b) = " << sizeof(b); cout<< "\nstrlen(b) = " << strlen(b); return 0; } strlen函数查找一个空字符,如果找不到该字符,则会表现异常。
输出:sizeof(a) = 10 strlen(a) = 9 sizeof(b) = 9 strlen(b) = 11
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。