#include "iostream.h"
class CMatrix
{
public:
CMatrix(int r,int c)
{
row=r;col=c;
element=new double[row*col];
}
double &operator()(int x,int y)
{
return element[col*(x-1)+y-1];
}
double &operator()(int x,int y) const
{
return element[col*(x-1)+y-1];
}
~CMatrix(){delete []element;}
private:
double *element;
int row,col;
};
void main()
{
CMatrix m(5,8);
for (int i=0;i<5;i++)
m(i,1)=i+5;
for (i=0;i<5;i++)
cout<<m(i,1)<<",";
cout<<endl;
}

解决方案 »

  1.   

    例如:
    int iSample[10];
    如果你想获得该数组的第5个数,就可以用iSample[4],其中“4”就是数组下标,它从0开始,所以第5个数的下标是4。
      

  2.   

    数组小标表示当前元素距离数组首地址之间的距离。
    如int a[10],
    那么a[3]表示的是距离数组首地址为3个int的值。
    int a[10][10]表示分配10×10的连续存储空间。但二维数组本质上是一个一维指针。
    如:
       int * p;
       int p = a;
    但好像只有数组可以通过a[][]这种方式访问。指针如果写为p[][]会出错。
      

  3.   

    定义二维数组如下:
    如动态定义个m×n的数组;
    int **P;
    P = new int *[m];
    for(int i=0; i<m; i++)
        P[i]=new int[n];这样完了后,就可以通过P[][]这种方式访问数组的元素。
      

  4.   

    回复人: tempd() ( ) 信誉:100 
    >>可能大家没有仔细看我的程序,程序中数组下标是从-8开始,然后是0、8依次递增,在VC6中结果是5,6,7,8,9,这不是越界了吗?
    你程序里面是这个意思的吗?好像你理解的不对吧?