2016-09-25 91 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(指針的指針char),這是不一樣int a[][20]其是相同int (*a)[20](一個指針指向一個char[20])。

將同樣的指針運算,以int **a導致不同的東西,然後它會爲int (*a)[20]

+0

嗯,爲什麼下降投票? – alk

2

當您通過a[i]第二維必須知道,要獲得正確的內存地址存取權限行,因爲

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

所以,當你存取權限的元素,偏移通過計算:

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

只要考慮如何在矩陣中找到位置爲[i][j]的元素(如果僅允許從第一個元素開始計數元素)來進行這項工作,您必須知道至少有多少元素連續。

相關問題