C語言二維數(shù)組怎么寫好
有同學在面對二維數(shù)組的時候,常常會犯渾。尤其是使用函數(shù)傳參的時候,有老師講到一維數(shù)組傳參后就等價于一級指針,部分同學舉一反三自學成才,想當然地認為二維數(shù)組傳參后就等價于二級指針,這是錯誤的。
假如,有如下代碼:
int a[2][3]; /pic/p>
function(a); /pic/p>
上述代碼中,就是將一個二維數(shù)組傳遞給一個函數(shù),那么這個函數(shù)怎么接受這個參數(shù)呢,答案是這樣的:
void function(int a[2][3]) /pic/p>
{ }
void function(int (*a)[3]) /pic/p>
{ }
千萬別寫成這樣:
void function(int **a) /pic/p>
{ }
究其原因,還是回到以前提過多次的數(shù)組與指針的結(jié)論:任何數(shù)組,都將被一律視為一個指向其首元素的指針。因此以下兩行代碼是等價的:
function(a);
function(&a[0]);
對于二維數(shù)組 int a[2][3] 而言,其首元素就是一個 int [3] ,因此&a[0]就是一個指向 int [3] 的指針,其類型當然是 int (*)[3] 了。這樣再來看上述的function兩種正確定義,就不難理解了。
【C語言二維數(shù)組怎么寫好】相關(guān)文章:
C語言二維數(shù)組02-14
c語言怎么定義一維數(shù)組和二維數(shù)組12-17
c語言中什么是二維數(shù)組02-19
C語言二維數(shù)組的定義和引用02-25
C語言二維數(shù)組知識點介紹11-11
C語言的數(shù)組與函數(shù)02-28
什么是C語言數(shù)組12-24
C語言數(shù)組教程02-28