zoukankan      html  css  js  c++  java
  • Sizeof面试题

    sizeof()功能:计算数据空间的字节数
    1.与strlen()比较
          strlen()计算字符数组的字符数,以""为结束判断,不计算为''的数组元素。
          而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
    2.指针与静态数组的sizeof操作
          指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。
    注意:int *p; sizeof(p)=4;
                      但sizeof(*p)相当于sizeof(int);      
          对于静态数组,sizeof可直接计算数组大小;
          例:int a[10];char b[]="hello";
                  sizeof(a)等于4*10=40;
                  sizeof(b)等于6;
     注意数组做型参时,数组名称当作指针使用!!
                   void  fun(char p[])
                   {sizeof(p)等于4}    
    经典问题: 
          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变量
    问题解析:a是一个很奇怪的定义,他表示一个指向double*[3][6]类型数组的指针。既然是指针,所以sizeof(a)就是4。 
          
    既然a是执行double*[3][6]类型的指针,*a就表示一个double*[3][6]的多维数组类型,因此sizeof(*a)=3*6*sizeof(double*)=72。同样的,**a表示一个double*[6]类型的数组,所以sizeof(**a)=6*sizeof  (double*)=24***a就表示其中的一个元素,也就是double*了,所以sizeof(***a)=4。至于****a,就是一个double了,所以sizeof(****a)=sizeof(double)=8
     
    转自:http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.html
  • 相关阅读:
    windows下wamp多域名的配置
    数据库设计
    面向接口编程
    面向对象的设计原则
    javascript设计模式——适配器模式
    javascript设计模式——状态模式
    javascript设计模式——装饰者模式
    javascript设计模式——中介者模式
    javascript设计模式——职责链模式
    javascript设计模式——享元模式
  • 原文地址:https://www.cnblogs.com/wangzhi/p/3377593.html
Copyright © 2011-2022 走看看