首页 > 代码库 > strlen实现
strlen实现
size_t my_strlen(const char* str){ const char* ptr = str; for (; ((int)ptr & 0x03) != 0; ++ptr) { if (*ptr == ‘\0‘) return ptr - str; } unsigned int* ptr_d = (unsigned int*)ptr; unsigned int magic = 0x7efefeff; //01111110 11111110 11111110 11111111 while (true) { unsigned int bits32 = *ptr_d++; if ((((bits32 + magic) ^ (bits32 ^ -1)) & ~magic) != 0) // bits32 ^ -1 等价于 ~bits32 { ptr = (const char*)(ptr_d - 1); if (ptr[0] == 0) return ptr - str; if (ptr[1] == 0) return ptr - str + 1; if (ptr[2] == 0) return ptr - str + 2; if (ptr[3] == 0) return ptr - str + 3; } }}
strlen实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。