C語言中如何將二維陣列作為函式的引數傳遞 - w3c學習教程
文章推薦指數: 80 %
}方法二,形參宣告為指向陣列的指標。
例如:#include. void func(int n,char(*str)[5]). void main().
C語言中如何將二維陣列作為函式的引數傳遞
2021-06-0715:07:59字數1683閱讀7585
**:
今天寫程式的時候要用到二維陣列作引數傳給一個函式,我發現將二維陣列作引數進行傳遞還不是想象得那麼簡單裡,但是最後我也解決了遇到的問題,所以這篇文章主要介紹如何處理二維陣列當作引數傳遞的情況,希望大家不至於再在這上面浪費時間。
正文:
首先,我引用了譚浩強先生編著的《c程式設計》上面的一節原文,它簡要介紹瞭如何
將二維陣列作為引數傳遞,原文如下(略有改變,請原諒):
[原文開始]
可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大**明,如:
voidfunc(intarray[3][10]);
voidfunc(intarray[10]);
二者都是合法而且等價,但是不能把第二維或者更高維的大小省略,如下面的定義是不合法的:
voidfunc(intarray);
因為從實參傳遞來的是陣列的起始地址,在記憶體中按陣列排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:
voidfunc(intarray[3]);實引數組維數可以大於形引數組,例如實引數組定義為:
voidfunc(intarray[3][10]);
而形引數組定義為:
intarray[5][10];
這時形引數組只取實引數組的一部分,其餘部分不起作用。
[原文結束]
大家可以看到,將二維陣列當作引數的時候,必須指明所有維數大小或者省略第一維的,但是不能省略第二維或者更高維的大小,這是由編譯器原理限制的。
大家在學編譯原理這麼課程的時候知道編譯器是這樣處理陣列的:
對於陣列intp[m][n];
如果要取p[i][j]的值(i>=0&&i
/c語言中函式間傳遞二維陣列的方法
例如:#include
voidfunc(intn,char str[
][5])
voidmain()
;func(3,str);
}方法二,形參宣告為指向陣列的指標。
例如:#include
voidfunc(intn,char(*str)[5])
voidmain()
;func(3,str);
}方法三,形參宣告為指標的指標。
例如:#include
voidfunc(intn,char**str)
voidmain()
;p[0]=&str[0][0];
p[1]=str[1];
p[2]=str[2];
func(3,p);
}#include
voidfun(int**ppn,intn1,intn2);
intmain(void)
;pptmp=(int**)a;
fun(pptmp,3,4);
return0;
}voidfun(int**ppn,intn1,intn2)
相關推薦
HTML總結
生存如果已經不是問題,那什麼會是問題
SQLNULL函式
C語言中如何將二維陣列作為函式的引數傳遞
教你如何寫PRD(產品需求文件)
相關推薦
HTML總結
生存如果已經不是問題,那什麼會是問題
SQLNULL函式
C語言中如何將二維陣列作為函式的引數傳遞
教你如何寫PRD(產品需求文件)
相關閱讀
HTML總結
生存如果已經不是問題,那什麼會是問題
SQLNULL函式
C語言中如何將二維陣列作為函式的引數傳遞
教你如何寫PRD(產品需求文件)
CLI模式下的引數獲取
topic
科技
教育
社會
linux
python
數碼
遊戲
資料庫
java
c++
健康
文化
娛樂
mysql
演算法
科學
財經
汽車
oracle
php
工作
C
作業系統
c#
職場
資料結構
C語言
sql
網路
體育
延伸文章資訊
- 1C語言中如何將二維陣列作為函式的引數傳遞 - w3c學習教程
}方法二,形參宣告為指向陣列的指標。 例如:#include. void func(int n,char(*str)[5]). void main().
- 2Double pointer · parallel_processing
雙層指標(double pointer or pointer of pointer) · cdecl解釋 · 二維陣列和字串陣列 · 指標在函數中改方向時必須以double pointer參數傳...
- 3[C語言]二維陣列傳參的格式(詳細+總結) - 程式人生
//傳遞“指標陣列”方法#include <stdio.h> //排序函式,分別對每一行的元素進行排序void sort(int *a[]... C語言二維陣列的指標及首地址問題. 若arr是一...
- 4如何在C++ 中將2D 陣列傳遞給函式 - Delft Stack
為了演示這個方法,我們定義一個固定長度的二維陣列,命名為 c_array ,為了將它的每個元素乘以2,我們將傳遞一個 MultiplyArrayByTwo 函式作為引數。
- 5C++ -傳遞二維陣列 - 小哈的程式工作坊
C++ -傳遞二維陣列(Pass 2D array as a function parameter in C++). 二維陣列到底怎麼傳進函式?指標?還要給數量?到底是ROW 的數量還是COLU...