zoukankan      html  css  js  c++  java
  • strlen 和 sizeof 的区别

    strlen:(1)函数

       (2)只能用char*作为参数,且必须是以‘’结尾的,不计算

       (3)由于是函数,当数组作为参数时,退化为指针

       (4)运行时才计算
    sizeof:(1)运算符,结果类型为size_t

       (2)可以用类型做参数,比如 short f();  sizeof(f())相当于sizeof(short) = 2,如果用在字符数组上,计算

        char aa[] = "abc";
        cout << sizeof(aa) << ' ' << strlen(aa) << endl;

        输出为 4和3

       (3)数组作为参数时,不退化

       (4)大多数程序在编译的时候就计算sizeof

       (5)sizeof只能计算静态数组的大小,不能计算动态分配的数组的大小

    实例(经典考题):
    double* (*a)[3][6];
    cout<<sizeof(a)<<endl; // 4       a为指针
    cout<<sizeof(*a)<<endl; // 72    *a为一个有3*6个指针元素的数组
    cout<<sizeof(**a)<<endl; // 24    **a为数组一维的6个指针
    cout<<sizeof(***a)<<endl; // 4     ***a为一维的第一个指针
    cout<<sizeof(****a)<<endl; // 8     ****a为一个double变量
    解析:首先要理解 double* (*a)[3][6],意思是定义一个二维数组,这个数组的每个元素都是指针,这个数组的数组名是*a, a是指向这个数组首地址的指针。所以a是一个指向一个三行六列double指针的数组的指针的指针,*a是3行6列数组的首地址,**a就是直线一维具有6个double*元素数组的首地址,***a是double*的指针,****a是double类型
     
  • 相关阅读:
    1mustache基本使用
    better-scroll
    PTA 题解:jmu-Java&Python-统计文字中的单词数量并按出现次数排序
    Java : Comparable 和 Comparator 接口
    java校验特殊符号
    vue项目左右布局的菜单效果,树形菜单
    响应式树形菜单导航,jq+ajax
    2020书单
    vite 为什么快
    vite 尝鲜
  • 原文地址:https://www.cnblogs.com/mini-coconut/p/8527236.html
Copyright © 2011-2022 走看看