• C语言中:strlen和sizeof的区别和它们分别交换各自作用领域(问题)时的细微差别!!!


    本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下:

    1. 用strlen计算数组长度要考虑进去
    2. 用sizeof计算字符串长度也要考虑进去
    3. 而sizeof在计算数组和strlen计算字符串长度(它们自己的领域里面)则不需要考虑
    4. 总结:字符数组与字符串不是相同的东西,在计算长度时,要用各自该用的东西(数组用sizeof,字符串用strlen)

    例如下面这段代码,计算数组长度用到了strlen,那么b[]内必须为4,要考虑,且不能为其他数字,否则编译运行出来结果将为别的错误答案;然而将strlen改为sizeof,则,b[]内为3,不需要考虑,

    填大于3的数字,假设为i,结果输出长度为i,不填也可以,将根据你{ }内实际的个数得到答案(题目中b[]不填输出为3),但是如果填了小于i的数,那么编译将不通过,编译器提示:error C2078: 初始值设定项太多。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include<string.h>
     4 
     5 int main()
     6 {
     7     char b[4] = {98,68,96};
     8     printf("%d
    ", strlen(b));
     9     system("pause");
    10     return 0;
    11 }

     另外:根据上面的程序还有注意的地方:

    float b[ ],sizeof长度为4乘花括号内个数,char型为1乘,int为 4乘,double为8乘

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    int main()
    {
        float  b[] = {2,3};
        printf("%d
    ", sizeof(b));
        system("pause");
        return 0;
    }

    下面和上面代码区别b[ ]={2,3}内加上了6,则sizeof计算数组长度时按照6来计算,结果为48(6*double的长度),另外定义数组时{ }内不能为空,否则会报错

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include<string.h>
     4 int main()
     5 {
     6     double  b[6] = { 2, 3 };
     7     printf("%d
    ", sizeof(b));
     8     system("pause");
     9     return 0;
    10 }
  • 相关阅读:
    WPF 从文件加载字体
    WPF 从文件加载字体
    WPF 从文件加载字体
    win10 uwp 让焦点在点击在页面空白处时回到textbox中
    win10 uwp 让焦点在点击在页面空白处时回到textbox中
    win10 uwp 让焦点在点击在页面空白处时回到textbox中
    PHP date_parse_from_format() 函数
    PHP date_offset_get() 函数
    PHP date_modify() 函数
    PHP date_isodate_set() 函数
  • 原文地址:https://www.cnblogs.com/hetaoyuan/p/10076915.html
Copyright © 2020-2023  润新知