【C语言进阶深度学习记录】三十一 数组作为函数参数时退化为指针
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】三十一 数组作为函数参数时退化为指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前的學習數組的文章中,已經知道一維數組作為函數參數的時候,最終會被編譯器編譯為指針。今天來看看二維數組的情形
文章目錄
- 1 為什么C語言中的數組作為函數參數會退化為指針?
- 2 二維數組作為函數參數如何退化
- 2.1 代碼案例分析(傳遞二維數組給函數參數)
- 3 總結
1 為什么C語言中的數組作為函數參數會退化為指針?
C語言是一種高效的語言:
2 二維數組作為函數參數如何退化
二維數組可以看做是一維數組,該一維數組存的元素是另一個一維數組。
二維數組中第一維的參數可以省略。如下圖所示:
- 下圖中是不同的數組類型作為函數參數的時候,會被編譯器編譯成的樣式:
注意區分:指針數組與二維數組退化后的不同形式。
同時我們需要非常注意以下幾點:
-
C語言中無法向一個函數傳遞任意的多維數組(所以說不是所有的數組維度都能作為函數參數)
-
必須提供除第一維之外的所有維長度
- 第一維之外的所有維度信息用于完成指針運算
- N維數組的本質是一維數組,元素是N-1維的數組
- 對于多維數組的函數參數,第一維的元素個數必須以函數參數的形式傳給函數,否則在函數體內無法得到整個函數
2.1 代碼案例分析(傳遞二維數組給函數參數)
- 代碼:35-1.c
- 編譯運行結果為:
3 總結
注意,C語言中只會以值拷貝的方式傳遞函數參數,所以如果想要修改某一個內存中的內容,就必須向函數傳遞該內容所在內存的地址。
- 多維數組作為函數參數的時候,必須傳遞除了第一維之外的所有維的大小信息。
- 最終多維數組在函數中被編譯器編譯為指針。
- 一定要牢記各個數組類型最終退化為什么樣的指針。參考本中的圖表
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】三十一 数组作为函数参数时退化为指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT5.11安装教程
- 下一篇: 如何防止google map 加载Rob