zoukankan      html  css  js  c++  java
  • 《C库 — strlen和sizeof》

    1.strlen函数

      strlen 函数用来求字符串的长度(包含多少个字符)。
      strlen() 函数从字符串的开头位置依次向后计数,直到遇见,然后返回计时器的值。最终统计的字符串长度不包括。

    头文件:string.h
    语法/原型:
    size_t strlen(const char* str);
    参数 str 表示要求长度的字符串。

    实例:

    #include <stdio.h>
    #include <string.h>
    int main(){
        char str[100] = { 0 };
        size_t len;
        gets(str);      //gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。
        len = strlen(str);
        printf("Length: %d
    ", len);
        return 0;
    }
    

      结果:  

      

    2.strlen的函数实现(C语言)

    #include <stdio.h>
    #include <assert.h>
    int strlen_new(const char* src)
    {
        int len = 0;
        assert(src);
        while(*src++ != '')
            len ++;
        return len;
    }
    int strlen_new1(const char* str)
    {
        const char *temp = str;
        assert(str);
        while(*str ++ !='');
        /*通过地址长度来取得*/
        return str - temp -1;
    }
    

      

    3.sizeof  

      sizeof是c语言中用来求字节运算符。(注意是运算符不是函数)

      作用:求出对象在计算机内存中所占用的字节数。

    int main(int argc, char *argv[])
    {
      char array[10] = {0};
      char *s = "zhuangquan";  
    
      sizeof(array);
      sizeof(s);    
    }
    

      第一个输出是10,第二个是4(如果用的是32位的系统)。

      解释一下为什么数组是10。数组在程序编译阶段就会计算出数组的长度,然后就跟数组名绑定在一起了。

      从编译器角度来讲,数组变量也是变量,和普通变量和指针变量并没有本质不同。变量的本质就是一个地址,这个地址在编译器中决定具体数值,具体数值和变量名绑定,变量类型决定这个地址的延续长度(整形4字节、字符型1字节)。

    4.sizeof和strlen的区别

      strlen计算不包含终止null字节的字符串长度。

      sizeof则计算包括终止null字节的缓冲区长度。

      两者之间的另一个差别是,使用strlen需进行一次函数调用,而对于sizeof而言,因为缓冲区已用已知字符串进行初始化,其长度是固定的,所以sizeof是在编译时计算缓冲区长度。

      

      输出结果:

      

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/10719172.html
Copyright © 2011-2022 走看看