zoukankan      html  css  js  c++  java
  • strlen和sizeof的区别

    strlen 是一个库函数,计算传进来的字符串的长度,以 ‘’结尾

    sizeof 是一个运算符,它计算的是传进来的指针在内存中所占空间大小,在编译时就已经获得了结果。

    C语言中没有字符串,用的是字符数组来模拟字符串。

    C风格的字符串时字符数组然后在末尾加0表示结尾。

    //在C语言中有strlen和sizeof两个函数求字符数组的长度函数,他们俩的区别就是是否把最后的结束标志也加上去。  //错误

    //strlen是不加的,他表示字符串的长度。  //错误

    而sizeof求的是字符串在内存中的长度,所以它是加上最后的''的

    //所以一般而言后者的长度会比前者多1。//错误

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char buf[] = "abcd";
        printf("sizeof(buf) = %d
    ",sizeof(buf));
        printf("strlen(buf) = %d
    ",strlen(buf));
    
        return 1;
    }

    运行结果:

    exbot@ubuntu:~/shareWin/CAndC++$ ./sizeofandstrlen
    sizeof(buf) = 5
    strlen(buf) = 4

    它们相差 1 并不是 sizeof 和 strlen 的问题,而是 buf 没有指定空间大小,直接初始化后需要多少空间在后面+1,所以表现出来的效果显示成sizeof结果比strlen大1

    strlen计算的是字符串到''位置的大小

    sizeof计算的字符串占的内存大小

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char str[100] = {0};
        strcpy(str, "abcd");
    
        int str_len = strlen(str);
        int str_size = sizeof(str);
    
        printf("strlen(str) = %d
    ", (str_len));
        printf("sizeof(str) = %d
    ", (str_size));
    
        return 0;
    }

    运行结果:

    ubuntu@ubuntu:~/workspace/test$ gcc sizeofAndStrlen.c -o sizeofAndStrlen
    ubuntu@ubuntu:~/workspace/test$ ./sizeofAndStrlen
    strlen(str) = 4
    sizeof(str) = 100

  • 相关阅读:
    [Cisco答疑]思科产品常见问题问答大汇总
    英语名人名言
    [配置实例]三层交换机组播配置实例
    利用VLAN技术组建三层线速校园网
    神州数码交换机配置基本命令
    SQL命令大全中英文对照
    SQL通用防注入系统3.1 最终纪念版
    带关闭按钮的浮动窗口
    Document方法对比
    HTML元素参考手册
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11566633.html
Copyright © 2011-2022 走看看