怎麼學習C語言指針?

怎麼學習C語言指針?


多寫代碼,多用指針


記住四句話即可

#1:指針數組是一個數組,它的元素是一個指針

#2:數組指針是一個指針,它指向數組的首地址

#3:指針函數是一個函數,它的返回值是一個指針

#4:函數指針是一個指針,它的指向函數的入口地址。

指針的用法就相當於彙編語言的間接定址,指針本身是一個變數,有自己的存儲空間,又有自己的值。


如何學習C語言的指針,說實話,這真是一個較大的話題,而且非常有難度,難到我只能告訴你不斷看教程,不斷思考與領悟,不斷寫代碼,不斷拿紙筆演算推理,不斷調試代碼這五步,是不是很空泛?確實很空泛,沒辦法,現實就是這樣。

其實我也在想,為何很多人看了教材有關指針章節後,依然犯暈,不理解,可能是教材沒有很形象的把指針的概念說出來吧。昨天下午我索性自己總結了一個理解指針的方法,即:從4個屬性來理解指針,分別是:

1.指針自己的值;如int *p = 0x380fe0;*p= 1;(這樣寫很危險,我只是闡述下意思)指正變數p自己的值就是0x380fe0;

2.與星號結合名;就是「*」與「p」一結合,就變成了「*p」,「*p」就是1;

3.有用數據的值;1就是有用的數據;

4.有用數據的類型;int就是有用的類型。

關於這4個屬性的詳細解釋文章請參見:知乎專欄

我猜以屬性的方法來解釋指針,應該會讓你有所感悟吧,歡迎批評指正!


指針看起來很難。

一個是學習之前,老師可能會告訴你,我們就快學到指針了,會很深入了。然後學生有了一種恐懼感。

再一個是學習指針的時候,確實有需要多深入的理解一些才行,更加鑒定了「指針好難」的信念。

但是會者不難。

學會了指針再回頭去看,就會發現好自然。別人學得會,你也一定可以。你正在經歷的,別人都已經經歷過去了,加油吧,少年。


我這很想幫你,這套c語言也能開發網站裡面就有透徹講解指針的,樓上寫的太長啦不知道你能不能看到。


這篇文章推薦給你:

核心語法進階:3、指針就是一個門牌號

其實學習一門編程語言,首先我想應該弄清楚幾個問題:

1、為什麼要學習C語言?

如果是想考試、過級為目的,那麼就快速把語法過一遍後,去找來歷年的真題來做一下,反覆找到自己出錯的盲點,然後不斷改正修復就可以在短時間內有一個好的成績

如果是興趣使然,想獲得一門技能。建議在最初階段最重要的是,要得到學習的反饋,這樣才有繼續學習新知識的動力,可以加入學習的圈子,跟大家一起學習,讓自己學習有及時的反饋,逐步精進,這樣才會走的遠,也可以克服初期遇到的很多問題。

2、C語言到底能做什麼?

C語言是一門面向過程的編程語言,相對於很多其它高級語言來說,它更加接近計算機運行的底層邏輯,使用C語言可以學習內存 的概念,可以掌握一些常用的演算法。想Linux和Windows系統和iOS系統 的核心都是C語言編寫的。還有很多嵌入式的應用,即很多跟硬體相結合的地方都是使用的C語言。C 語言在幾十年中一直保持前三的地位,可以說是非常經典的語言。

3、如何學習C語言?

首先,我們不可避免的是學習基礎的語法和一些計算機內存的概念。在這個學習過程中是相對較枯燥的,可以找一些相關的專欄:《C語言核心30天突破》 或者圈子,加入後跟其它小夥伴一起學習交流,這樣會比較有動力,而且遇到問題也容易解決。

當我們基礎的語法學會後,就可以學習一些基礎的演算法,演算法是實現一個程序的核心,演算法通俗一點講就是實現某個目標的核心方法。然後再學一點數據結構的知識,和演算法結合起來,這樣會達到事半功倍的效果。

在這個過程中可以學一點圖形化編程的東西,但是建議不要去學一些複雜的庫和框架,那會將消耗你大量的精力。有一個組合非常適合初學者使用,就是:ege圖形庫 + codeblocks。

你可以看下專欄:《C語言核心30天突破》

祝你早日學成!


推薦閱讀:

如何理解c/c++語言的聲明以及類型?

TAG:C編程語言 | 指針 |