c語言怎麼給二維數組
『壹』 c語言函數傳遞二維數組
C語言如果給函數傳遞二維數組作為參數
先看一個傳遞二維數組的例子:
編譯:
程序看著沒有任何問題,但是編譯器通不過,報錯在處理二維數組參數a的時候,類型不兼容。
C語言裡面對二維數組的存儲是按照一維數組來處理的,二維數組按照行展開的方式按順序存儲,例如在上面的例子中:
二維數組a的定義:
它等同於一維數值的定義:
因為他們的空間存儲分配一樣的。
所枝伍培以在利用二維數組作為參數傳遞時,必須指定二維數組的列數,否則函數無法勾畫出二維數組的猛唯組織形式。只有有了列長度,通過下標a[i][j]時才能得到正確的下標地址,即:
我們改一下上面的額foo函數定義:
編譯運行:
這下就正常了。
參數如上所列。
我們看到,函數的參數聲明改成了:
這個聲明的含義是:
不過此時還是需要指定二維數組的列長度,不然函數內部還是無法使用二維下標去訪問數組:
編譯:
原因同前面方法1一致,如果要訪問二維數組,必須指定列的長度,否則無法計算橘瞎出該元素的地址,a[i][j]=a [ (i-1)*COLNUM + j ],如果沒有COLNUM,那麼這個地址無法計算出來。從形參的聲明來說,a就是一個指針,指向一維數組的指針,而不是一個二維數組。
這里要注意的是指針的指針,和二維數組的差異;二維數組的地址是連續的,所有成員按順序排序;而指針的指針只要求指針地址連續,而不要求指針的指針地址連續。
然後作為實參傳遞時,也不能直接使用a傳遞,因為類型不匹配,必須定義新的變數p,然後把a的值賦給p,再傳遞給foo函數。
『貳』 c語言中 二維數組要怎麼輸入怎麼換行啊
scanf那行里的a[i][j]要寫成&a[i][j],輸入就正常的輸入就行了,其實scanf讀入數字的時候,數字可以用空格、回車或者TAB間隔,比如說一個2x2的數組,你輸入
10 11
12 13
或者輸入10 11 12 13都是可以的。
『叄』 如何用C語言列印出二維數組
假設需要列印的數組為int類型,數組名為Array,Dim1為數組的行,Dim2為數組的列。
inti,j;//臨時變數
for(i=0;i<Dim1;i++)//外層循環遍歷行
鏈余for(j=0;j<Dim2;j++)//內層循環遍歷列
{
printf("%d",Array[i][j]);//訪問數組元素並列印
}
『肆』 c語言二維數組怎麼用
我也不是高手,也是初學。正巧碰到這個問題感覺我還是能解決的。就隨手寫了下,回答下。大家共同進步哈。有不對的地方還要請各位真正的高手指正。
代碼在下面,復制到你的編輯器裡面看比較好,加了註解的。還有問題就再問哈。
---------------------------------------------------------------
public class d_array
{
public static void main(String[] args)
{
int[][] d_array = new int[8][8]; //定義一個8行8列的二維數組
int num = 1; //定義一個填充用的數備用
for (int i = 0 ; i < d_array.length ; i++)
for (int j = 0 ; j < d_array[i].length ; j++)
d_array[i][j] = num++;
//讓上面那個填充數自加並填充進數組
for (int p = 0 ; p < d_array.length ; p++)
{
System.out.println("數組第 "+(p+1)+" 行中的值為:"); //加一句說明是第幾行的,不要也可以。
for (int q = 0 ; q < d_array[p].length ; q++)
System.out.print(d_array[p][q]+"\t"); //加這個\t可以有效的分離開兩個數,排版好看
System.out.print("\n\n"); //換行,第一個用於一行之後換行,第二個用於一個空行,與下面那行隔開,排版好看的
}
//分行列印數組
int sum = 0; //一樣,定義一個合備用
for (int m = 0 ; m < d_array.length ; m++)
for (int n = 0 ; n < d_array[m].length ; n++)
sum = sum + d_array[m][n];
//分別將數組中的各個數加到這個合中去,最後得到的這個合就是數組中所有數的合了。
System.out.println("數組中的所有值得合為:"+sum); //列印結果
}
}
---------------------------------------------------------------
其實二維數組的操作秘訣就是兩個for循環套起來用,這樣就很簡單了。