2014-02-08 47 views
0

我明白代碼創建一個指針變量作爲二維數組。但我覺得,而不是 被用來存儲另一個變量(二維數組)的地址指針變量存儲與實際的數字,以擺脫只使用數組的缺點。 我是對還是錯?幫助我提高對指針的理解。我想知道以下C++代碼的用途

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

在下次發佈之前,嘗試將代碼格式化一些,正如Whozcraig爲您所做的一樣。 – citelao

+1

@citelao希望現在至少可讀。 – WhozCraig

+0

在這段代碼中'ind'的用處是值得懷疑的,除了混淆之外,還有其他的東西。走代碼,然後考慮它的消除,用'i'代替它,然後完全刪除底部的'ind + = 1'。也許它會更清楚一點。 – WhozCraig

回答

-1

指針是對其他變量的引用,實際上並不包含任何值。

+2

指針不是引用。參考文獻是參考。指針指向數據,而不必指向其他變量。 –

+0

這是錯誤的。指針是獨立變量;它們不是引用,* do *包含一個值。 (一個地址)。 – WhozCraig

0

我不知道如果我理解你真的想知道什麼,而是:

每個變量(不要緊,什麼類型的),有它自己的(有時與他人分享,但讓跳過那一會兒)放到你個人電腦的記憶中。 指針存儲關於特定變量所在的存儲器的地址的信息。代碼中的new運算符用於爲變量分配一些內存。您提供的代碼所行的下面:

u=new double*[nx]; 

分配給存儲nx指針(所以nx*sizeof(double*))所需的內存,並獲得分配的內存的地址。地址存儲在指針u中。

u[ind]=new double[ny]; 

分配給存儲ny雙打(所以ny*sizeof(double)),並獲得分配的內存的地址所需的memoy。地址存儲在指針u[ind]中。

相關問題