假如一个 4 * 3 的数组,你可以想象为
0,0   0,1   0,2
1,0   1,1   1,2
2,0   2,1   2,2
3,0   3,1   3,2由于数组就是连续的存放空间,如果用连续编号来看就是
0,    1,    2,
3,    4,    5,
6,    7,    8,
9,    10,   11由于可以得到第一个元素的地址,就可以算出后面元素的地址,就是每行无素数 * 以前的行数 + 在当前行的位置,这就是 5 * i + j 的意思&b[0][0]+5*i+j 是 b[i][j] 的地址,该数组的一行有 5 个元素

解决方案 »

  1.   


      不是吧,*(&b[0][0] + 5 * i + j)表示的应该是变量b[i][j]呀,
       iamfancy说的很对,你的数组应该是定义为 b[?][5]的,
       例:array[3][5]   array[0][0] array[0][1] array[0][2] array[0][3] array[0][4]
                         array[1][0] array[1][1] array[1][2] array[1][3] array[0][4]
                         array[2][0] array[2][1] array[2][2] array[2][3] array[0][4]
          而在计算机内是这么存放的:(address 是词数组的初始地址)
                       address +5* 0 +0        array[0][0]  
                       address +5* 0 +1        array[0][1]
                       address +5* 0 +2        array[0][2]
                       address +5* 0 +3        array[0][3]
                       address +5* 0 +4        array[0][4]
                       address +5* 1 +0        array[1][0]
                                           .
                                           .
                                           .
                       address +5* 2 +4        array[2][4]                     
                    
    实际上数组在计算机中都是用指针表示的。
           重载是c++语言的优秀之处,相同名称的函数可以被定义很多次,主要以函数返回值类型和携带的参数类型不同而加以区别,如,你可以定义三个函数:
           int add(int x,int y){ return x+y;}
          long add(long x,long y){ return x+y;}
           float add(float x,float y){ return x+y;}
    还有参数个数也可以不同:
          int add (int x,int y, int z) {return x+y+z;}
        在程序中直接调用,编译器会自动识别。重载为虚函数和“继承”提供了支持。