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()函数用于计算字符串中字符的长度,在长度的计算过程中,遇到规定的截止符则停止计算。

  • 相关阅读:
    PC端圣诞树下载
    win7开机一直在正在启动windows界面怎么办?
    EFI、UEFI、MBR、GPT的区别
    进入BIOS中,设置U盘启动
    CSS3摆动动画效果
    比特币钱包搭建与使用
    自动校时工具
    windows7蓝屏0x000000c4
    如何使用webpack打包你的项目
    开源货币/比特币Multiminer、bitrade、bitcoinjs-lib、python-bitcoinrpc介绍
  • 原文地址:https://www.cnblogs.com/wyt123/p/10696713.html
Copyright © 2011-2022 走看看