c 和指针 二维数组赋予一维数组指针 数组长度 数组与指针长度区别

 

//拿到一块代码 客服 编译 链接错误的感觉(根据msdn提示)感觉很好!

 

 

void test_sizof_hxf出题(){

    int iArr[2][3]={1,2,3,6,5,4};

    int **piArr=(int **)iArr;

 

    int (*piArr数组指针1)[1]=(int (*)[1])iArr;  //无法从“int [2][3]”转换为“int (*)[1]

       int (*piArr数组指针2)[2]=(int (*)[2])iArr;

          

              int (*piArr数组指针3)[3]=iArr;

                  int (*piArr数组指针4)[4]=(int (*)[4])iArr;

 

          

 

    /************************************************************************/

    /*                                                                      */

    /************************************************************************/

    //int iArrb[2][];// 缺少下标

    //int iArrb[2][]={1,2,3,4};//// 缺少下标

    int iArr小于4[]={1,2,4};

    int iArr大于4[]={1,2,4,5,6};

    int iArr[]={0}; //不能分配常量大小为 0 的数组

   

 

    printf("%d %d \n",*(piArr+1),*(piArr));

    //!!! 数组+1..不等效于指针+1.....

    //!!数组取到值, *(piArr).. **iArr

 

    printf("下面测试 二维数组地址赋予 一位数组指针\n");

    printf("piArr数组指针1 %d \n",**(piArr数组指针1));

       printf("piArr数组指针2 %d \n",**(piArr数组指针2));

       printf("piArr数组指针3 %d \n",**(piArr数组指针3));

           printf("piArr数组指针4 %d \n",**(piArr数组指针4));

       printf("\n");

 

    //使用强制转换赋值,结果未知。这与gcc效果不一样。piArr数组指针1 2

    //

 

 

 

    printf("test_sizof_hxf出题 测指针 %d %d %d \n",sizeof(iArr),sizeof(iArr+1),sizeof(iArr+3));

    //只有 数组是全部的大小!!!

    //指针不会检查的

 

 

    printf("*iArr,*(iArr+1),**(iArr),**(iArr+1),*(*(iArr)+1)  %d %d %d %d %d\n",*iArr,*(iArr+1),**(iArr),**(iArr+1),*(*(iArr)+1) );

    //二维数组取值。**

 

    printf("sizeof(iArr小于4),sizeof(iArr大于4),sizeof(iArr) %d %d %d \n",sizeof(iArr小于4),sizeof(iArr大于4),sizeof(iArr));

   

 

 

//201222523:27:26

//强制转换!

//sizeof :

//取值 :二维数组  ..指针。

 

}

posted @ 2012-02-26 00:07  os66  阅读(1095)  评论(0)    收藏  举报