我理解代码会将指针变量创建为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;
}
答案 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)
指针是对其他变量的引用,实际上并不包含任何值。