zoukankan      html  css  js  c++  java
  • C语言中sizeof、strlen函数的部分理解

    一、测试环境

      Win10 + Visual Studio 2017

    二、测试代码

    #include "pch.h"
    #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    int main(void) {
        char a[10] = "hello";
        char b[10] = { 'h','e','l','l','o'};
        char c[] = "hello";
        const char *d = "hello";
        cout << "sizeof(a) = " << sizeof a << ' ' << "strlen(a) = " << strlen(a) <<  '
    ' <<endl;
        cout << "sizeof(b) = " << sizeof b << ' ' << "strlen(b) = " << strlen(b) << '
    ' << endl;
        cout << "sizeof(c) = " << sizeof c << ' ' << "strlen(c) = " << strlen(c) << '
    ' << endl;
        cout << "sizeof(d) = " << sizeof d << ' ' << "strlen(d) = " << strlen(d) << '
    ' << endl;
        return 0;
    }

    三、测试结果 

      结果1(x86):

    sizeof(a) = 10 strlen(a) = 5
    
    sizeof(b) = 10 strlen(b) = 5
    
    sizeof(c) = 6 strlen(c) = 5
    
    sizeof(d) = 4 strlen(d) = 5

      结果2(x64):

    sizeof(a) = 10 strlen(a) = 5
    
    sizeof(b) = 10 strlen(b) = 5
    
    sizeof(c) = 6 strlen(c) = 5
    
    sizeof(d) = 8 strlen(d) = 5

    四、测试结果分析

      

     图 1 变量a的内容

     图 2 变量b的内容

     图 3 变量c的内容

    图4 变量d内容

      1、sizeof函数的使用

      sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小:

        sizeof (data type)

      data type:要计算大小的数据类型,包括类、结构、共用体和其他用户自定义数据类型。

      实质上,char属于整数类型,存储的是整数,而不是字符,计算机用特定的数字编码来处理字符,比如常用的源自于美国的ASCII编码。标准的ASCII码的范围是0~127,只需要7位二进制数即可表示,通常,char类型被定义为8位存储单元(1 Byte)。C语言一般把1字节定义为char类型占用的位(bit)数。【一般各种基本类型的数据占用位数的大小,均有相应的文件进行限制】

      sizeof函数在计算对象的大小时,都是先转换成对象类型,然后对对象类型进行计算。

      如果data type是指针的话,则计算的是计算机内部地址总线的宽度。指针,记录着另一个对象的地址,因为其存放地址的功能,造成其长度等于计算机内部总线地址的长度,与指针具体指向哪一类型的数据没有关系。(32-bit OS 为 4,64-bit OS 为8)

      综上,可以容易的理解为:char a[10]、char b[10]为同一类型,char c[]根据实际的复制看作是char c[6],char * d为指针,已知各自的结果为上图所示。

      2、strlen函数的使用

       strlen()函数用于计算字符串中字符的长度,在长度的计算过程中,遇到规定的截止符则停止计算。

  • 相关阅读:
    jquery animate()方法 语法
    jquery unload方法 语法
    jquery undelegate()方法 语法
    jquery unbind()方法 语法
    jquery trigger() 方法 语法
    jquery toggle()方法 语法
    jquery change() 函数 语法
    jquery blur()函数 语法
    jquery bind()方法 语法
    jquery checked选择器 语法
  • 原文地址:https://www.cnblogs.com/wyt123/p/10696713.html
Copyright © 2011-2022 走看看