sizeof,你知道多少

    技术2025-11-28  8

    今天去参加面试,笔试的第一道题就是这个sizeof的用法,考了六七个,平时觉得很熟,真拿来考到迷糊了。有必要再总结一下。

     

    题是这样的:在32位操作系统环境下,请问以下sizeof的值各是多少。

     

    一:

    int  p=10;

    sizeof(p)=?

     

    这个就简单,int型变量p占4个字节,答案就是4.

     

    二:

    char *p="hello";

    sizeof(p)=?

     

    这个比较容易错,看上去是字符串的长度5,其实这个和上一个本质上是一样的,只不过p成了一个指针型变量,所以答案还是4.

     

    三:

    char p[]="hello";

    sizeof(p)=?

     

    这个p和上一个p虽然被看成是指针。但是这个p毕竟不是指针变量,他是一个字符串的首地址。所以sizeof(p)就是字符串的长度再加1(加上结尾的'/0'),所以答案是6.

     

    四:

    int p[100];

    sizeof(p)=?

     

    这个和上一个类似,p是一个数组的首地址,但是区别在于数组是整形数组。sizeof(p)就是数组的长度×每个元素占用字节.也就是100×4=400。这个用法可以用来求数组元素的个数,sizeof(p)/sizeof(p[0])就是400/4=100.

     

     

     

    暂时还没想到其他用法,如有会及时补充上。

     

     

     

     

     

     

     

    最新回复(0)