C語言指標教程 入門到精通《一》

2021-06-25 10:32:35 字數 1378 閱讀 4696

一、指標是什麼?

指標也是乙個變數,但是這個變數儲存的是乙個位址,指向乙個儲存單元。我們可以根據指標(位址)找到他所指的變數,並對這個變數進行操作(賦值等)。通過c裡面的取位址符號

&和取所指內容的符號

*可以很方便的表示指標以及指標所指的變數之間的關係。

二、為什麼要用指標?

為什麼要用指標?指標能夠帶來哪些好處?以下內容引用課本上的內容:

「正確而靈活的應用的指標,可以有效的表示複雜的資料結構;能夠動態的分配記憶體;方便的使用字串;有效而方便的使用陣列;在呼叫函式時獲得乙個以上結果;能直接處理記憶體單元位址等

」以上的概括應該算是比較完整的,但是對於初學c的人可能又會理解起來很抽象(可能都理解不了什麼是資料結構);我們嘗試從最簡單的-----「

在呼叫函式時獲得乙個以上結果

」來看看指標的作用。

1》值傳遞:c中在函式呼叫時始終採取「值傳遞」的方式。意思是這樣的:並不是實參直接參與了函式(參加了函式內的各類操作),只是實參把他的值傳遞給形參去參與函式,完成函式內的操作(

函式呼叫時形參被分配了記憶體,形參的值是實參的拷貝;但要明白,形參和實參不是乙個變數,不占用相同的記憶體,形參發生變化了實參不一定變化。就好比三個變數a,b,c執行了步驟:b=a;b=c後,a不一定等於c)

例1:請看下面的**。**是要實現兩個數(a,b)的交換,於是構造了交換函式swap;但是能完成目的嗎?

例2:那麼怎麼辦呢?應用指標。理解下面的程式,他能很好的完成數字交換的工作。

這裡面可能有同學會疑問「為什麼這樣就可以?這裡函式呼叫也是值傳遞啊」。

對。這裡也是但值傳遞;但是在swap裡面,是根據指針對所指向的變數進行了操控,(可以給他起個名字-----上帝之手)你心裡要明白,我們在函式呼叫時,不是x和y互相

交換了,而是通過這兩個指標,對他們所指的內容(即a,b本身)進行了調換。

例3:如果你理解了以上我所說的,再看看下面這段**,他能完成任務嗎?

怎麼樣?是不是有點糊塗。我來幫你理理思路。就算你用指標做函式引數,函式呼叫依舊是值傳遞的。例2中,x,y指向a,b,通過*x,*y就可以改變a,b;例3中,x,y指向a,b,swap交換了x,y;可這對主函式裡的c,d指標以及變數a,b沒有帶來任何改變。

C語言 指標 從入門到精通

最近在老師在講資料結構,然後發現自己的c指標內容好多都遺忘了,在此做了個總結,趁機鞏固下c語言的知識。基本知識點歸納 指標就是位址,位址就是指標。指標變數就是存放位址的變數。如果乙個指標變數指向乙個普通變數,則 指標變數 就完全等普通變數。位址就是記憶體單元的編號。指標變數就是存放位址的變數 指標是...

C語言 結構體從入門到精通

最近老師在講解資料結構的內容,當老師講資料結構的 時,經常用到結構體這個東西,趁機複習下結構體的內容。結構體的定義 把一些基本型別的資料組合在一起而形成的乙個新的複合型的資料型別,這個就叫做結構體。為什麼需要結構體 為了表示一些複雜的事物,而基本的資料型別無法滿足相應的請求。結構體的一般形式 申明乙...

TRIO Basic從入門到精通教程一 軟體安裝

雲盤中分享了兩個軟體 mpv3與及mpv4,兩款軟體都支援對trio四代產品進行程式設計!第六代產品也陸續發布,mpv3就沒有相容能力,建議使用mpv4軟體!軟體安裝步驟簡單 2 以管理員身份安裝 win7系統安裝時右鍵以管理員身份安裝 xp系統直接開啟安裝 3 安裝net4.0框架 系統安裝過ne...