[C語言]二維陣列傳參的格式(詳細+總結) - 程式人生
文章推薦指數: 80 %
//傳遞“指標陣列”方法#include
轉載請標明出處[link]https://blog.csdn.net/qq_43868654/article/details/84641383
初遇二維陣列作函式引數,宛如自己化身為了大頭兒子。
很頭大。
不禁大聲吶喊:該怎麼宣告定義,該怎麼呼叫,又該怎麼函式中操作元素和地址?
在此,我要撥開這些問題的一些迷霧。
我相信,有心人看完後,再遇就不會怕了。
其實宣告,定義是一樣的。
因此,只寫宣告。
同時,把元素外層*()剝去就代表地址。
因此只寫元素。
最後有總結。
二維陣列作函式引數,依我看來,至少可以分成三種。
事先,在main函式中inta[m][n];好了,進入主題。
第一種形參為二維陣列
宣告
voidfunction(inta[m][n]);//函式宣告
voidfunction(inta[][n]);//不論多少維陣列,第一維都可省略。
//憑什麼,第二維就不可省略呢?由編譯器的定址方式決定。
呼叫
function(a);//函式呼叫實參直接寫陣列名!陣列名!(重點)。
//(注意)function(a[m][n])或function(a[][n])都不可以!
//話說,寫陣列名多好,簡單輕鬆。
在函式操控元素
1.*(a[i]+j)//代表第i行第j列
2.*(*(a+i)+j)//同上
3.*((int*)a+i*n+j)//同上,n表示第二維陣列長度,即列寬
//不管怎麼樣,a[i][j]不被允許。
也是由編譯器的定址方式決定。
第二種形參為陣列指標
(其實只是宣告定義與第一種不同,其他一樣)宣告
voidfunction(int(*a)[n]);
//不是(int*a[n])(指標陣列),而是(int(*a)[n])(陣列指標);
//緣由是[]的優先順序比*的大
呼叫
function(a);//函式呼叫實參同樣直接寫陣列名!
//(注意)function(a[m][n])或function(a[][n])同樣都不可以!
在函式操控元素
1.*(a[i]+j)//代表第i行第j列
2.*(*(a+i)+j)//同上
3.*((int*)a+i*n+j)//同上,n表示第二維陣列長度,即列寬
//a[i][j]不被允許。
由編譯器的定址方式決定。
第三種形參為二級指標
宣告
voidfunction(int**a,intn);n表示第二維陣列長度,即列寬
呼叫
function((int**)a,intn);//實參不能為陣列名!*與上面相反*!有兩個*!
//(注意)function(a)或function((int*)a)不可以!
在函式操控元素
*((int*)a+i*n+j)//只有一種!n表示第二維陣列長度,即列寬
//其他不被允許。
由編譯器的定址方式決定。
總結宣告定義(分三種)。
二維陣列,陣列指標,二級指標。
(都是指標)呼叫(一對一,二對二)陣列指標,二維陣列就寫一級指標即陣列名.二級指標就寫二級指標即(int**)陣列名在函式中操作元素(注意二級指標,只能用最後的方法)
*(a[i]+j)//代表第i行第j列
((a+i)+j)//同上
*((int*)a+i*n+j)//n表示第二維陣列長度(列寬)也就是說3.是萬能的。
宣告,定義是一樣的。
同時,把元素外層()剝去就代表地址。
喜歡就為我點贊,評論加收藏。
轉載請標明出處[link]https://blog.csdn.net/qq_43868654/article/details/84641383
[C語言]leetCode簡單篇之14題
«上一篇
Attempttoinvokevirtualmethod'voidandroid.widget.TextView.setText錯誤下一篇»
相關推薦
[C語言]二維陣列傳參的格式(詳細+總結)
喜歡就為我點贊,評論加收藏。
轉載請標明出處[link]https://blog.csdn.net/qq_43868654/article/d...
c語言二維陣列在子函式中的傳址
在學習c語言的過程中,指標與二維陣列的傳值,傳址一直是我比較混淆的部分,今天做了一個較為完整的總結
一.自己定義...
C/C++語言二維陣列作為函式的引數總結
C/C++語言二維陣列作為函式的引數總結
一、 情況1:實參為二維陣列
比如 inta[3][3];
呼叫形式 ...
【C語言】二維陣列解魔方陣
解題思路:
魔方陣的排列規律如下(思路來自網際網路):
注意:剛開始我也沒看懂,但是相信我多看幾遍理解已經能看懂的。
如3×3的魔方陣:&...
C語言-----二維陣列
二維陣列的建立,初始化,使用。
(一)二維陣列的建立二維陣列定義的一般形式:型別說明符陣列名[常量表達式][常量表達式]舉例如下:...
C語言二維陣列指標練習
描述
程式填空,使其輸出結果是:1,2,3,4,10,12,14,16,18,20,11,12,
#include
因為arr是陣列的首地址,*arr就是取首地...
c語言二維陣列的下標運算與指標偏移
首先,定義一個二維陣列intArray[y][x];
一、 對於二維陣列的指標偏移的運演算法則。
同一維陣列一樣...
搜尋
基礎教學
Mysql入門
Sql入門
Android入門
Docker入門
Go語言入門
Ruby程式入門
Python入門
Python進階
Django入門
Python爬蟲入門
最近訪問
[C語言]二維陣列傳參的格式(詳細+總結)
C語言傳遞二維陣列
[C++]+標頭檔案中不要用using+namespace+std
zabbix監控ssl證書到期時間
GET和POST中文亂碼的解決方法
目前最精準的Android開源計步器
[瘋狂Java]代理伺服器:Proxy(代理連線)、ProxySelector(自動代理選擇器)、預設代理選擇器
slf4j+log4j與spring整合及相關配置使用
使用+ftrace+除錯+Linux+核心
MySQL中可為空的欄位設定為NULL還是NOT+NULL
延伸文章資訊
- 1Double pointer · parallel_processing
雙層指標(double pointer or pointer of pointer) · cdecl解釋 · 二維陣列和字串陣列 · 指標在函數中改方向時必須以double pointer參數傳...
- 2C++ -傳遞二維陣列 - 小哈的程式工作坊
C++ -傳遞二維陣列(Pass 2D array as a function parameter in C++). 二維陣列到底怎麼傳進函式?指標?還要給數量?到底是ROW 的數量還是COLU...
- 3C / C++ 函式傳遞二維陣列範例與解說 - CHG
不定長度的二維傳遞- 手動轉型. 那如果要傳遞不定長的二維就必須使用指標的指標 int** 來傳遞不過這樣的用法沒辦法直接 ...
- 4C語言中如何將二維陣列作為函式的引數傳遞 - w3c學習教程
}方法二,形參宣告為指向陣列的指標。 例如:#include. void func(int n,char(*str)[5]). void main().
- 5如何在C++ 中將2D 陣列傳遞給函式 - Delft Stack
為了演示這個方法,我們定義一個固定長度的二維陣列,命名為 c_array ,為了將它的每個元素乘以2,我們將傳遞一個 MultiplyArrayByTwo 函式作為引數。