《Sizeof与Strlen的区别与联系及学习示例》

版权申诉
0 下载量 50 浏览量 更新于2024-03-07 收藏 124KB DOCX 举报
在学习 Sizeof 与 Strlen 时,需要注意它们的区别与联系。Sizeof 是一个运算符,用于获取数据类型或变量在内存中所占的字节数;而 Strlen 是一个函数,用于获取字符串的长度。在实际应用中,它们的用法及返回值都有一定的差异,下面通过几个例子来具体说明。 例子 1: ```c char* ss = "0123456789"; sizeof(ss) //4,ss 是指向字符串常量的字符指针 strlen(ss) //10,只能用它获得这个字符串的长度 char ss[] = "0123456789"; sizeof(ss) //11,ss 是数组,计算到 \0‟位置,因此是 10+1 strlen(ss) //10,strlen 是个函数内部实现是用一个循环计算到\0 为止之前 char ss[100] = "0123456789"; sizeof(ss) //100,ss 表示在内存中的大小 100×1 strlen(ss) //10,strlen 是个函数内部实现是用一个循环计算到\0 为止之前 int ss[100] = "0123456789"; sizeof(ss) //400,ss 表示再内存中的大小 100×4 strlen(ss) //错误,strlen 的参数只能是 char* 且必须是以 \0 结尾 ``` 从这个例子可以看出,对于不同类型的变量或数组,Sizeof 和 Strlen 的返回结果是不同的。而且需要注意的是,在使用 Strlen 函数时,参数必须是 char* 类型的,并且必须以 \0 结尾。 例子 2: ```c class X{ int i; int j; char k; }; X x; cout<<sizeof(x); //输出 12,因为类 X 中有两个 int 类型变量和一个 char 类型变量,所以占用的内存大小为 4+4+1=12 ``` 在这个例子中,我们定义了一个类 X,其中包含了两个 int 类型的变量和一个 char 类型的变量。通过使用 Sizeof 运算符,我们可以得到类 X 占用的内存大小为 12。 再举一个例子,比如想要统计一个数组中的元素个数: ```c int arr[] = {1, 2, 3, 4, 5}; int length = sizeof(arr) / sizeof(arr[0]); cout<<length; //输出 5,因为数组 arr 中有 5 个元素 ``` 通过上面这个例子,我们可以看到,利用 Sizeof 运算符可以很方便地统计数组中的元素个数,而不需要手动去计算。 综上所述,Sizeof 和 Strlen 在 C++ 中都是很有用的函数和运算符。通过这些例子的学习,我们可以更加深入地理解它们的使用方法和区别,为以后的编程学习和实践打下坚实的基础。