zoukankan      html  css  js  c++  java
  • c/c++中关于sizeof、strlen的使用说明

    sizeof: 一般指类型、变量等占用的内存大小(由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小)

    strlen: c字符串的长度(参数必须是字符型指针 char*,当数组名作为参数传入时,实际上数组就退化成指针了。该函数的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL(或0x00),返回的长度大小不包括NULL)

     

    1、sizeof的使用

    sizeof(int);  // 返回int类型在内存中占用的字节数4(x86)或8(x64)

    int a = 2;

    sizeof(a);  // 返回int 变量在内存中占用的字节数4(x86)或8(x64)

    const char *b = "abcd";

    sizeof(b);  // 返回char类型指针在内存中占用的字节数4(x86)或8(x64),指针占用的字节数大小和类型无关

    char *parr = new char[10];

    sizeof(parr);  // 返回char类型指针在内存中占用的字节数4(x86)或8(x64),指针占用的字节数大小和类型无关

    int func() {return 2;}

    sizeof(func()); // 返回int类型在内存中占用的字节数4(x86)或8(x64)(即函数的返回值类型,不能为void)

     

    2、strlen的使用

    c字符串是否结束是以''标志来判断的

    const char *a = "abcd";

    strlen(a);  // 字符串长度为4

    sizeof(a);  // 在内存中占用的字节数4(x86)或8(x64)

    char b[10] = "abc";

    strlen(b);  //字符串长度为 3

    sizeof(b);  // 在内存中占用的字节数10(x86)或20(x64)

    const char *c ="abc";

    strlen(c);  // 字符串长度为1

    sizeof(c);  // 在内存中占用的字节数5(x86)或10(x64)

    char a[] = {};

    在数组 a 中,a[i] = '' 与 a[i] = 0 效果一样。因为''是预定义的符号常量,其值为0。''常用于字符串结束标记,而0就是普通的即时常量,所以代码中给字符数组最后一位添加结束标记时写''而不写0具有提示意义,便于阅读。

    #incluce <iostream>
    using namespace std;
    
    int main()
    {
        char a[280];
        for(i = 0; i < 280; i++)  
        {  
            a[i] = i + 1; // a[255] = 0
        } 
        cout << strlen(a) << endl; // 255, char占8bit,当你存256的时候,写成二进制是1 0000 0000,因为char只有8个bit,所以1没有存进去,只存进了8个0,这时候strlen判断到这里就认为字符串结束了
    }

     

    备注:在c++中string字符串的长度可以使用其成员函数length()和size()

    std::string str = "hello world"

    str.size(); // str.length();

    在孤独中思考,在思考中成熟,在成熟中升华
  • 相关阅读:
    第五次作业
    第四次作业
    Java实验二
    java第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
  • 原文地址:https://www.cnblogs.com/laogaoyang/p/6076514.html
Copyright © 2011-2022 走看看