C二维数组行为空,列不为空
二維數(shù)組:
處理二維數(shù)組得函數(shù)有一處可能不太容易理解:數(shù)組的行可以在函數(shù)調(diào)用時(shí)傳遞,但是數(shù)組的列卻只能被預(yù)置在函數(shù)內(nèi)部。
eg:
1 #define COLS 4 2 int sum(int ar[][COLS],int rows){ 3 int r ; 4 int c; 5 int tot=0; 6 for(r=0;r<rows;r++) 7 for(c=0;c<CLOS;c++) 8 tot+=ar[r][c]; 9 return tot; 10 }:系統(tǒng)可以根據(jù)初始化的數(shù)據(jù)個(gè)數(shù)和第2維的長(zhǎng)度可以確定第一維的長(zhǎng)度。
eg:? ? int a[ ][3]={ 1,2,3,4,5,6};
數(shù)組的第一維的定義被省略,初始化數(shù)據(jù)共6個(gè),第二維的長(zhǎng)度為3,即每行3個(gè)數(shù),所以a數(shù)組的第一維是2。
一般,省略第一維的定義時(shí),第一維的大小按如下規(guī)則確定:初值個(gè)數(shù)能被第二維整除,所得的商就是第一維的大小;若不能整除,則第一維的大小為商再加1。
?
?
?
變長(zhǎng)數(shù)組:變長(zhǎng)數(shù)組必須是自動(dòng)存儲(chǔ)類(lèi)的,這意味著它們必須在函數(shù)內(nèi)部或作為函數(shù)參量聲明,而且聲明時(shí)不可以進(jìn)行初始化。
注意:“變”并不表示在創(chuàng)建數(shù)組后,可以修改其大小。變長(zhǎng)數(shù)組的大小在創(chuàng)建后就是保持不變的。“變”,是指其維度大小可以用變量來(lái)指定。
?
代碼聲明規(guī)范:
int sum2d(int rows,int cols,int ar[rows][cols])//正確
int sum2d(int ar[rows][cols],int rows,int cols)//順序不正確,因?yàn)閍r的聲明中使用了rows cols,所以在參量列表中,他們兩個(gè)聲明需要早于ar.
int sum2d(int ,int ,int ar[*][*]);//正確? 省略了維數(shù)參數(shù)的名稱(chēng)
?
轉(zhuǎn)載于:https://www.cnblogs.com/tianjiale/p/9902179.html
總結(jié)
以上是生活随笔為你收集整理的C二维数组行为空,列不为空的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle查找重复数据
- 下一篇: 从零开始搭建物联网平台(6):消息的持久