none
关于C语言多维数组与下标的转换问题 RRS feed

  • 问题

  • #include <stdio.h>


    int main(void)
    {
     int array[4][5][3];
     int i,j,k;
     for (i=0;i<4;i++)
      for (j=0;j<5;j++)
       for (k=0;k<3;k++)
        array[i][j][k]=i*100+j*10+k;
    printf("%d", *(*(*array+1)+2));


    printf("%p",*(array+1)+4);
    printf("%p",array[1][4]);
    printf("%p",&(array[1][4]));

     

    int aaa;
     getchar();
    }

    /*为什么
    printf("%p",array[1][4]);
    printf("%p",&(array[1][4]));

     

    这两句的打印结果是一样的,都是同一个地址;

    如果说array[1][4]是指向array[1][2][0]的指针

    那array[1][4]这个指针的地址怎么和它值是一样的呢?

     

    附 指针表达式 转换成 下标表达式    望高手指正是否理解正确(各表达式间没有连续关系)

     指针表达式                        下标表达式

    *array                              &array[0]

    *(array+2)                       &array[2]

    *(array+1)+4                   &array[1][4]

    *(*(*array+1)+2)             array[3][1][2]

    *(*(*array+1)+2)             array[1][2][0]

    *(**array+2)                   array[1][0][0]

    ***array                          array[0][0][0]

     

     

     

     

     

     

     

    2010年8月6日 3:34

答案

全部回复

  •  
     
    2010年8月6日 16:44
  • 哈哈哈,竟然这么多错,

    看了一个上午,看了很多遍,也验证了,算是看懂了,不过理解还是有点乱,不知道以后能不能记的住

    还有我现在的学习进度是不是有些慢,看个指针,看个数组就要花一个星期的,而且这方面看的太多,不知道对以后实际的编程中有没有真实用处,如果没有,也很容易忘记的。

    DX,你真是太强了,。。。能否加我QQ呀,我的Q819066852

    2010年8月7日 5:21
  • 终于可以回复了,前段时间不知道为什么,总是回复不了,回复就弹出一个空菜单
    2010年8月8日 7:46