我想知道以下c ++代码的目的

时间:2014-02-08 19:40:59

标签: c++ pointers

我理解代码会将指针变量创建为2d数组。但我觉得不是 用于存储另一个变量(2d数组)的地址时,指针变量与实际数字一起存储,以避免仅使用数组的缺点。 我是对还是错?帮助我提高对指针的理解。

double** assign_initial_guess(
    int nx,
    int ny,
    double top,
    double left,
    double right,
    double bottom,
    double interior)
{
    //n --> number of nodes in one direction
    //top,left,right,bottom,interior --> values need to assigned at respective nodes
    double** u=0;
    int ind=0;
    u=new double*[nx];

    for(int i=0;i<nx;i++)
    {
        u[ind]=new double[ny];
        for(int j=0;j<ny;j++)
        {
            u[i][j]=interior;
            if(i==0)
                { u[i][j]=top;} // top boundary

            if(j==0 && i>0 && i<(nx-1))
                { u[i][j]=left;} // left boundary

            if(j==(ny-1) && i>0 && i<(nx-1))
                { u[i][j]=right;} // right boundary

            if(i==(nx-1))
                { u[i][j]=bottom;} // bottom boundary
        }
        ind+=1;
    }
    return u;
}

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你真正想知道的事情,但是:

每个变量(与哪种类型无关),有自己的(有时与其他人分享,但暂时可以跳过)放在PC的内存中。 指针存储有关特定变量所在内存的地址的信息。代码中的new运算符用于为变量分配一些内存。您提供的代码执行以下操作:

u=new double*[nx];

分配存储nx指针所需的内存(所以nx*sizeof(double*))并获取分配的内存的地址。地址存储在指针u中。

u[ind]=new double[ny];

分配存储ny双精度所需的备忘录(所以ny*sizeof(double)),并获取已分配内存的地址。地址存储在指针u[ind]中。

答案 1 :(得分:-1)

指针是对其他变量的引用,实际上并不包含任何值。