C語言中如何將二維陣列作為函式的引數傳遞 - w3c學習教程

文章推薦指數: 80 %
投票人數:10人

}方法二,形參宣告為指向陣列的指標。

例如:#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 網路 體育



請為這篇文章評分?