zoukankan      html  css  js  c++  java
  • C++ sizeof操作符的用法和strlen函数的区别

    摘要:本人首先介绍了C++中sizeof操作符的用法和注意事项,其次对比了和strlen的区别和使用,方便大家在写代码的时候查阅,和面试、笔试的时候复习。

    目录:

    sizeof的用法:

    sizeof和strlen的区别:

    sizeof的用法:

    sizeof 是一种单目操作符,而不是函数。sizeof以字节形式给出操作数的存储空间

    操作数可以是一个表达式或在括号内的类型名。操作数的存储空间由操作数的类型决定。

    char str[]="hello";
    char str1[100];
    char *p;
    int n=10;
    sizeof(str1)=100;
    sizeof(str)=5+1;
    sizeof(p)=4;
    sizeof(n)=4;
    void Func(char str[100])
    
    {
        sizeof(str)=4;//str退化成指针了
    }
    void *p=malloc(100);
    sizeof(p)=4;

    当数组变量被传入函数中做sizeof 运算,则和指针的运算没有区别。

    sizeof和strlen的区别:

    • sizeof是运算符;strlen 是函数;

    • sizeof操作符的结果类型是size_t,它在头文件typedef为unsigned int 类型,该类型保证能容纳实现所建立的最大对象的字节大小。

    • sizeof可以用类型做参数,strlen只能用char * 做参数,且必须是以''结尾。

    • 数组做sizeof的参数不退化,但作为strlen函数的参数,就会退化为指针了。

    • 大部分编译器在编译程序的时候,就计算出来sizeof了,这也是sizeof()可以作为数组定义的维数的原因,strlen函数的结果要等运行的时候才能计算出来,它用来计算字符串的长度,不是类型占内存的大小。

    • sizeof后如果是类型必须加括号,如果是变量名可以不加括号。这是因为sizeof是操作符不是函数的原因。

    • 在计算字符串数组的长度上有区别。 例如:

             char str[10];
             int a=strlen(str);
             int b=sizeof(str);
             //a 为0  b为10;
    • 如果要计算指针指向的字符串的长度,则一定要使用strlen例如:

             char *str="hello";
             int a=sizeof(str); 
             int b=strlen(str);
             //a=4  b= 5   
  • 相关阅读:
    docker logs-查看docker容器日志
    初探 Elasticsearch,学习笔记第一讲
    Centos7 环境下设置固定IP
    强制使用索引查询方法
    linux 常用命令
    MySQL 调优
    docker 常用命令
    mysql 创建临时表
    mysql or in union all 使用方法
    mysql 创建存储过程
  • 原文地址:https://www.cnblogs.com/googny/p/3695319.html
Copyright © 2011-2022 走看看