【C語言】指針進(jìn)階第四站:數(shù)組/指針的傳參問題!
朋友們,到站啦!指針進(jìn)階第四站:傳參問題
0.引例
自定義函數(shù)里形參的類型,要和函數(shù)調(diào)用中傳過去的實參類型相對應(yīng)
test函數(shù)里的是int類型,我們傳過去的參數(shù)a也是int類型
好了,現(xiàn)在你已經(jīng)知道了函數(shù)傳參的基本概念了吧!
那么就來分析一下數(shù)組傳參、指針傳參的代碼吧!
1、一維數(shù)組傳參
看看以下函數(shù)的代碼示例
你覺得誰是正確的,誰是錯誤的呢?
NO.1 形參使用數(shù)組的形式來接收,正確
NO.2 同樣是數(shù)組的形式,正確
需要注意的是,數(shù)組傳參并不會開辟一個新的數(shù)組
所以函數(shù)[ ]里的數(shù)字是多少并不影響
NO.3 數(shù)組名是首元素的地址,用指針接收,正確
NO.4 arr2是一個指針數(shù)組,(int *arr[20])和原數(shù)組對應(yīng),正確
NO.5 數(shù)組名是首元素地址,arr2的首元素是一個int*類型
可以用二級指針來接收,正確!

2、二維數(shù)組傳參
了解完一維數(shù)組了,那就來看看二維數(shù)組
以下的函數(shù)傳參,哪些是對的,哪些是錯的呢?
根據(jù)二維數(shù)組傳參的代碼,復(fù)習(xí)以下知識點
(1)二維數(shù)組的首元素是第一行
(2)二維數(shù)組在定義的時候可以省略行,不能省略列
第一行的類型是int[5],應(yīng)該放進(jìn)?數(shù)組指針里!
3、一級指針傳參
4、二級指針傳參
以下是二級指針傳參的基本形式
pp是int**類型,而&p是指針變量的地址,要用二級指針來接收
再來看如下代碼
&p、pp、arr這三個參數(shù)的類型都是二級指針
test函數(shù)里面要用char**來接收
arr是指針數(shù)組的數(shù)組名,數(shù)組名是數(shù)組首元素的地址
數(shù)組的首元素是char*類型,所以要用二級指針來接收
5、如何判斷參數(shù)類型
如果我們在寫代碼的時候,不缺定應(yīng)該用什么類型來接收的時候
可以寫一個測試代碼,VS編譯器會報錯“類型不一致”

結(jié)語
傳參問題并不算非常難,但我們?nèi)砸炀氄莆?/p>
這樣才能避免在寫自定義函數(shù)的時候出現(xiàn)參數(shù)類型不同的bug!
第四站數(shù)組傳參到這里就結(jié)束啦!

為了幫助大家,輕松,高效學(xué)習(xí)C語言/C++,給大家分享我收集的資源,從最零基礎(chǔ)開始的,幫助大家在學(xué)習(xí)C語言的道路上披荊斬棘!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!大家也要把握住大學(xué)的時光,抓住成長的每一次機(jī)會哦~
編程學(xué)習(xí)書籍分享:

編程粉絲交流:
