C和指针之数组和函数部分总结
函數和數組2個章節部分學習總結
1、之前對函數參數傳遞指針沒有理解到位,以為像傳其它的數據一樣,只是數據的一份拷貝,然后不修改原始的數據,函數參數如果是傳遞的指針,傳遞給函數是指針的一份拷貝,可以通過指針間接訪問數據,從而得到修改原始數據,反正不能把指針變量本身傳遞給一個函數,
如果把這個函數里面的進行在堆區分配內存空間,只不過是指針的拷貝的這個指針分配了內存,如果不返回,編譯器會自動分配和回收,無法使用,實際指針還是沒有分配內存,如果想要想要給實際指針分配內存,我們可以在函數里面分配內存了然后return這個指針,或者用二級指針作為參數也行,二級指針分配的內存是真正給了指針變量本身,然后我們絕對不可以在函數返回堆區的指針,因為函數退出時,它的棧也就被清除了,之后其內容會被別的局部變量、函數調用保存的上下文等信息替換掉,所以返回的這個棧偏移就失去意義了。
2、之前不知道在函數參數中,聲明數組可以不指定長度,不聲明是合法的,因為函數不為數組元素分配內存,調用時把實參數組名里面的常量地址傳給形參數組名,就是說形參數組名保存的就是實參數組名里面存的地址。這樣在被調用函數內部,形參數組就指向了和實參數組名指向的同一個數組。
3、函數遞歸調用自己的時候,比如遞歸調用自己的時候下面還有值打印,這個值應該是當前調用的這個函數的值,而不是之前掛載的值,之前我這里理解不太深刻,后面在答辯文檔中會給出相應的Demo.
4、之前不知道遞歸的開銷非常大,因為返回調用自己會為局部變量分配內存空間,一般還是少用。
總結
以上是生活随笔為你收集整理的C和指针之数组和函数部分总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C和指针之auto和内存栈和regist
- 下一篇: C和指针之字符串之strlen、strc