吹着牛B學C語言之---指針

吹着牛BC語言之---指針

Kunsa原創,轉載請註明地址

初學C語言的朋友對指針很畏懼,其實沒啥可怕的,之所以大家對指針的概念很模糊是因爲和指針聯繫的東西很多,比如,指針數組,函數指針。。。。

從最基本的開始說:指針就是一個內存地址。。。說完了。指針就這麼一個知識點。關燈,睡覺!

呵呵。有點吹牛B,其實就是這麼一回事兒,指針就是一個內存地址,關鍵是他指向哪裏,比如,有些指針指向變量,有些指向數組的頭元素(其實就是指向數組),有的指針指向函數(這個用的很少。。),C++裏邊有的指向對象。。有點亂,其實如果你看不懂這段,完全不是因爲你指針沒有學好,是因爲你的其它知識沒有儲備到位,不用着急,慢慢儲備!

說明指針以前應該瞭解一下函數參數的傳遞方式,函數參數分按值傳遞和按地址傳遞(C++裏邊還有個按引用傳遞,暫且不談),按值傳遞很好理解,比如,a=1,將a傳給一個參數,就是把a複製一下傳進去,注意,是複製,不是直接傳進去。按地址傳遞有點難理解,我通俗一點說啊。按地址傳遞的話就是告訴函數,如果想操作這個變量就到這個地址這裏去操作,比如,傳int型變量a的指針,比如這個變量地址是0x1234567(具體地址表示方式我忘記了。⊙﹏⊙b汗。但是是這個意思的),那麼函數想操作這個的時候就直接去0x1234567去操作了,而如果是按值傳遞,那就是複製一下,複製後的地址,,,鬼才知道。。

。。。。。好像指針就這麼些東西。。。。。

再有就是mallocfree的了。。那個。。講起來就更費勁了。。。先暫時理解這麼些吧!其實大家有時間看看MSDN,對語言的理解很有幫助,呵呵。加油!

 

Kunsa一家之言,僅供娛樂!如有錯誤,敬請指正!   Kunsa拜上!~~~

2010.5.24 對小銳朋友提出的錯誤表示感謝!

        修改:我在上邊說的“如果是按值傳遞,那就是複製一下,複製後的地址,,,鬼才知道

這段話有問題,在x86彙編裏邊,函數的參數傳遞分爲三種,http: 
                                                                                                               ----------圖片引自看雪論壇

如果您看不懂這個圖片也大可不必傷神,裏邊涉及到的都是彙編知識,我稍微說一下,函數在傳遞參數的時候,包括傳遞指針,都是往堆棧中push變量,堆棧是系統爲程序分配的一段內存,主程序在調用函數之前,先把需要傳遞的參數push到堆棧中,然後被調用的函數pop它們。在函數中的局部變量也是暫存在堆棧中。函數結束需要有個堆棧平衡,平衡堆棧的方法不同也就出現了三種不同的函數調用方式。。這個我就不細說了,呵呵,太詳細的話就沒完沒了了。如果哪位有興趣可以單獨聯繫我。。

發佈了36 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章