程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 二維數組作為函數的參數傳遞

二維數組作為函數的參數傳遞

編輯:C++入門知識

如何將二維數組作為函數的參數傳遞,這是涉及到多維數組時經常要遇到的問題。長期來,我們往往知其然,但不知其所以然。這裡簡單總結一下。

1.《C程序設計》中講到:可以用二維數組名作為實參或者形參,在被調用函數中對形參數組定義時可以指定所有維數的大小,也可以省略第一維的大小說明,如:

 Func( array[][ Func( array[][]);

二者都是合法而且等價,但是不能把第二維或者更高維的大小省略。兩個示例程序如下:

#include <iostream>
  fun( a[][],( i=;i<n;i++( j=;j<n;j++<<a[i][j]<< test[][]={{,},{,

上面程序提供了二維數組中兩個維度的大小,再看下面:

#include <iostream>
  fun( a[][],( i=;i<n;i++( j=;j<n;j++<<a[i][j]<< test[][]={{,},{,

上述兩段程序均可正常運行,輸出結果:

3.如果把二維數組名傳遞給int**,編譯階段將會報錯:不能將參數 1 從“int [2][2]”轉換為“int **。因為二維數組的結構和二維指針是不同的,在底層,二維數組的結構和一維數組是一樣的。在二維數組中,a和a[0]均指向數組首地址,而且二維數組是按行順序存儲的。

。這樣,把二維數組傳遞給int**的程序也就不難理解了,如下:

#include <iostream>
  fun( **a,( i=;i<n;i++( j=;j<n;j++<<*((*)a+i*n+j)<<endl;
 test[][]={{,},{, **)test, 

我的理解大致就是這樣了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved