首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    sizeof和strlen的区别

    简单介绍: . sizeof是一个操作符,是用来计算操作数的所占内存的大小的,单位是字节 strlen是用来计算字符串的长度的一个函数,需要引用头文件string.h 区别在于sizeof是操作符...,而strlen是一个函数 . sizeof是不关心内存中所存放的数是多少的,只关心内存中的数所占几个字节 而strlen则需要关系内存中的数的多少,strlen函数用来计算字符串的长度,其计算的终点是...字符‘\0’,只要strlen函数遇到了‘\0’,就会停止计算字符串的长度,得出最终的字符串的长度大小 ps:如果字符串中没有‘\0’,则strlen函数就会继续往下寻找,直到找到‘\0’为止,这可能会造成越界访问...,使得其得出的字符串长度值错无并且其值的大小是一个随机的值 小练习: 我在网上看见了一个关于sizeof和strlen函数的有趣的题目,有利于我们去理解题目之间的区别,在这里我分享给大家: #include

    12600

    技术总结|如何提升 strlen 的性能?

    最近在工作中遇到一些开发,很多人觉得实现 strlen 是一件很简单的事情,很快写出如下代码: inline size_t strlen_standard(const char* str) {...return s - str; } 以上代码没错,简单,时间复杂度 O(n),但是我们用 glibc 的版本和当前实现对比,发现性能有 4-6 倍的差异,数据如下: glibc性能对比 随着字符串的长度增加,strlen_standard...为什么 glibc 中的 strlen 性能这么好? 1....} } 优化原理: 并行处理:一次检测8个字节(64位系统)或4个字节(32位系统) 减少循环次数:相比逐字节检测,循环次数减少8倍 更好的指令流水线:减少分支预测失败 使用 SIMD 优化 strlen...代码 参考 glibc 的代码,使用 SIMD 指令对 strlen 做代码改造如下(一次取 16 个字节): // ARM64 NEON版本 - 优化版 inline size_t strlen_neon

    4310

    c语言strlen函数的模拟实现

    1.strlen函数介绍 strlen的功能: 函数返回字符串str 的长度( 即空值结束符之前字符数目)。...; printf("%zd\n",strlen(str)); printf("%zd\n",sizeof(str)); } 输出结果如下图所示: 我们会发现 : sizeof(str); 比strlen...(str) 的结果多一 这是因为strlen()函数不统计’\0’ ,而sizeof统计’\0’ (因为统计的是整个数组的大小) 在监视窗口里我们也可以证实‘\0’的存在: 下面是strlen()...函数的官方解释: 2.strlen()函数的模拟实现 (1)循环计数法 我们在了解了strlen()函数的功能后,很容易想到利用 指针传递字符串地址,然后判断是否 == ‘\0’的操作来进行计数,代码如下...; unsigned int len = strlen(str); printf("len is %zd\n",len); len = my_strlen(str); printf("my len

    29110
    领券
    首页
    学习
    活动
    专区
    圈层
    工具
    MCP广场