學習c語言的時候指針應該怎么理解?
指針是初學C語言的一個難點。我只能盡量說得淺顯一些,希望能幫到您。
傳值還是傳引用當我們調用一個函數的時候,需要考慮是向函數里傳遞一個變量值還是傳遞變量引用的問題。如果不希望函數的內部處理改變外部的變量值,那么就需要傳值也就是用變量名作為參數。如果希望函數的內部處理直接改變外部參數的值,那么就需要傳引用,也就是把變量的指針作為參數傳進去。
地址跟指針的異同指針的值是一個地址,這是指針和地址相同的地方。但指針是有類型的而地址卻沒有。指針的類型的作用是讓指針運算可以按照其類型的大小移動指針。在C語言中以char為例
char a;表示a是個變量char *a;表示a是個指針,取指針指向的變量的值要用*a不管a是指針還是變量,&a都是a的地址。指針的應用指針最典型的應用就是做鏈表。鏈表是通過指針收尾相接連起來的數組,由于可以從中間截斷再接上非常方便快捷,鏈表是C語言的一個特色。另外,還有函數指針,結構體指針,這些指針可以用來傳遞復雜的變量,特別是使用函數指針可以做出來很多巧妙的程序。
指針的弊端在定義指針的時候必須對指針進行初始化,也就是讓指針指向一個實際的變量,否則,極易因為指向錯誤內存而引起系統崩潰。C語言的指針給操作系統的內存安全帶來了不小的麻煩,因為它給黑客提供了窺視他人情報的手段。
總結一下,指針最主要的作用就是傳遞引用,在沒有指針變量的語言中也需要對值和引用做規定,比如,C#中使用關鍵字ref來表示傳遞的是引用,而Java的類只能傳遞引用。C語言的指針盡管難理解,但卻是最靈活的。抓住這一點,相信會好理解一點。
上一篇怎樣傳視頻最快
下一篇世界上最好玩的十大棋