面试sizeof C语言各个类型占用字节书

来源:互联网 发布:archlinux如何配置网络 编辑:程序博客网 时间:2024/06/03 21:05
#include <stdio.h>
void fun (int q[100])
{
    int y;
    y = sizeof (q);
    printf ("%d\n", y);
    return ;
}
int main()
{
    int f;
    int *p;
    f = sizeof *p;
    printf ("%d\n" , f);
    /*这里的值应该是p所指向的值,,这是一个整形,所以在32位系统上输出的是4,,,下面改变指针所指向的值的类型以验证*/
        char *d;
    f = sizeof *d;
    printf ("%d\n", f);
    /*这里将指针所指向的数据类型更改为char型,验证啦上 面的说明,这里输出是1*/
    double *g;
    f = sizeof *g;
        printf ("%d\n", f);
    /*这里输出的是8,,在32位系统中double占用8个字节*/
    short *h;
    f = sizeof *h;
        printf ("%d\n", f);
    /*这里输出的是2,,在32位系统中short占用的是2个字节*/
    long *j;
    f = sizeof *j;
        printf ("%d\n", f);
    /*long类型占用4个字节*/
    float *k;
    f = sizeof *k;
        printf ("%d\n", f);
    /*float类型占用4个字节*/
        printf ("*********************************\n");
    f = sizeof p;
    printf ("%d\n", f);
    f = sizeof d;
    printf ("%d\n", f);
    f = sizeof g;
    printf ("%d\n", f);
    f = sizeof h;
    printf ("%d\n", f);
    f = sizeof j;
    printf ("%d\n", f);
    f = sizeof k;
    printf ("%d\n", f);
    /*以上这几行输出的都是指向各种类型的指针本身,,,,在32位系统上输出的都是4*/
        printf ("*********************************\n");
    int a[100];
    int l;
    l = sizeof (a);
    printf ("%d\n", l);
        /*这一行输出的是400,,,及4*100一个4个字节a代表的是整个数组*/
    l = sizeof (a[100]);
    printf ("%d\n", l);
    /*这里输出的是4,,a[100]只是代表第100个元素*/
    l = sizeof (&a);
    printf ("%d\n", l);
    l = sizeof (&a[0]);
    printf ("%d\n", l);
    /*这里输出的是两个指向数组元素的指针,,,,指针所占的字节*/
    int r[100];
    fun(r);
    /*这里就不同于上面400的情况,,,函数传递的是一个数组的指针*/

}