在c语言中,strlen函数,引用<string.h>头文件,作用是计算字符串长度。
定义 : size_t strlen ( const char * str );
这里有两处说明:
1.返回类型size_t
size_t 可以看作 unsigned long ,是无符号长整形。
2.参数用 const 修饰
const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。然而 const 的位置不同,被限制的对象 也不相同,这里写三个代码比较一下:
(1)const char * p = str;
(2)char const * p = str;
(3)char * const p = str;
这里面(1)(2)都是 const 在 * 的左边,这两个代码是等价的,限制 p 指向的元素,即 *p 不能修改。
而(3)是 const 在 * 右边,限制的是指针指向,即 p 不能修改。
通过上面的三个代码,我们可以这样理解,const 在 *p 的左边,限制的是*p,只在 p 的左边,限制的是p。
那么来看看实例代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char* str = "hello";
printf("%lu\n", strlen(str));
system("pause");
return 0;
}
说明:打印时用的%lu,这是对应的无符号长整形的打印,与上面所说的size_t 是无符号长整形相呼应。
字符串最后会有一个 '\0' ,在这个函数中只计算 '\0' 之前的元素个数。所以结果应该是5,看看结果: