二維數組無法作為參數直接傳遞給函數,但是可以利用二維數組內部數據的連續性,將二維數組的地址按照一維數組的方式傳遞給函數,并傳入對應的行列數,從而實現函數內打印二維數組的效果。
成都創新互聯是一家集網站建設,臺安企業網站建設,臺安品牌網站建設,網站定制,臺安網站建設報價,網絡營銷,網絡優化,臺安網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
以整型為例,具體方式如下:
void?print_array(int?*a,?int?m,?int?n)//a為一個m行,n列的二維數組的首地址。
{
int?i,?j;
for(i?=?0;?i??m;?i?++)
{
for(j?=?0;?j??n;?j?++)
{
printf("%d,",?a[i*n+j]);//a[i*n+j]也就是原始二維數組第i行第j列的元素。
}
printf("\n");//每行結束輸出換行。
}
}
以下是一個C語言程序,用二維數組定義一個自定義函數數組,并計算數組中的最大值:
```c
#include stdio.h
// 自定義函數,用于計算一個整數數組的最大值
int array_max(int arr[], int len) {
int max = arr[0];
for (int i = 1; i len; i++) {
if (arr[i] max) {
max = arr[i];
}
}
return max;
}
int main() {
// 定義一個二維數組,包含5個一維數組,每個一維數組包含6個整數
int arr[5][6] = {
{1, 2, 3, 4, 5, 6},
{6, 5, 4, 3, 2, 1},
{2, 4, 6, 8, 10, 12},
{3, 6, 9, 12, 15, 18},
{9, 8, 7, 6, 5, 4}
};
// 定義一個函數指針數組,用于存儲array_max函數的地址
int (*func_array[5])(int[], int) = {array_max, array_max, array_max, array_max, array_max};
// 遍歷二維數組,依次調用函數指針數組中的函數,計算每個一維數組的最大值
for (int i = 0; i 5; i++) {
int max = (*func_array[i])(arr[i], 6);
printf("Array %!d(MISSING) max value: %!d(MISSING)\n", i, max);
}
return 0;
}
```
在這個程序中,首先定義了一個包含5個一維數組的二維數組arr。然后,定義了一個函數指針數組func_array,用于存儲array_max函數的地址。接下來,通過遍歷二維數組arr,依次調用函數指針數組中的函數,計算每個一維數組的最大值,并輸出結果。
這個程序中的函數指針數組可以用于存儲任意數量的自定義函數,并且可以在需要時動態地改變其內容。
方法
有2
將該數組定義為全局變量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.將該數組作為函數參數傳遞到自定義函數里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}