2016-09-25 2 views
-1

ReadVector()にはなぜint a[][20]を書かなければならないのですか? [20]の目的は何ですか。なぜa[][]と書くことができないのですか?なぜint配列[] [20]ですか?

int a[20][20 ], n,m; 

int ReadVector(int a[][20],int n,int m){ 
for (int i=0; i<n; i++) 
     for (int j=0; j<m; j++){ 
      cout<<"a["<<i<<","<<j<<"]="; 
      cin>>a[i][j]; 
      } 

return *a[20];` 

答えて

-1

なぜ私はa[][]を書き込むことはできませんか?

int a[][]int (*a)[20]char[20]へのポインタ)と同じであるint a[][20]同じされていない(charへのポインタへのポインタ)int **aと同じであるので。

int **aに同じポインタ演算を適用すると、結果は異なるint (*a)[20]になります。

+0

なぜ、下の票? – alk

2

あなたはa[i]経由で行をアクセスもまた、第2の寸法は、要素のアクセスもとき

&(a[i]) = &(a[0]) + i*m*sizeof(int) 

だから、オフセットは経由して計算されるため、右のメモリアドレスを取得するために、知っていることがあります。

&(a[i][j]) = &(a[0]) + i*m*sizeof(int) + j 

最初の要素から数えて要素を数えることができる場合は、行列内の位置[i][j]の要素を見つける方法を考えてください...この作業を行うには、少なくともいくつの要素があるかを知る必要があります一列に

関連する問題