int n;
int a[10];n = sizeof(a);//n = 40int *p;
p = a;
n = sizeof(p);//n = 4

解决方案 »

  1.   

    你是说第二个n为什么是4么?
    对于32位操作系统所有的指针变量的sizeof返回值都是4,不管指向什么东东。
      

  2.   

    int 在16位平台上是16bit,在32位平台上是32bit。
    sizeof返回的是8bit的大小。所以是4*10=40
      

  3.   

    编译器知道a是数组,所以sizeof(a)=40
    编译器知道p是指针,所以sizeof(p)=4楼主要记住sizeof()是一个编译时的概念,从某种意义上来讲类似于宏。
    预处理就已经把sizeof(x)替换成相应的数值了而预处理只知道sizeof(x)中x的类型。
      

  4.   

    sizeof()的参数时数据类型,如果设为变量则取变量的类型。
      

  5.   

    一个int类型是4字节,一个一维的10个元素的int类型数组就是4*10=40,所以第一个n为40.
    指针就是内存地址,对于32位的操作系统,一个地址的大小就是4字节,所以第二个n为4.