今天就跟大家聊聊有關(guān)C語言中如何使用指針變量,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專業(yè)的中國電信云錦天府,四川各地服務(wù)器托管,中國電信云錦天府、多線服務(wù)器托管.托管咨詢專線:18980820575
當我們將一個指針變量定義好之后,接下來需要考慮的問題就是如何來使用這個指針變量了。前面學(xué)習普通變量的時候,我們知道,一個變量的操作其實就是分成讀和寫兩個步驟。而指針變量在平時使用的時候,也是主要分成讀和寫兩個操作步驟,不同于常規(guī)變量的是,指針變量的賦值運算其實是寫入一個普通變量的地址,我們將這一個過程稱為指針變量的“指向操作”。而對指針變量讀取的時候,由于指針變量存放的是某一個變量的地址,而讀取某一個地址這個操作往往是沒有意義的,因此在指針變量讀取的時候,大多數(shù)情況我們都是讀取指針變量指向的那個變量里面的內(nèi)容。指針變量的指向操作,其實就是將定義好的一個指針變量指向某一個變量或者內(nèi)存區(qū)域,其方式為:“數(shù)據(jù)類型 *指針變量名 =&指向的變量;“。當然也可以先定義指針,再將其指向某一個變量,即:在使用時,一定要注意上面“*“號的用法差異。還需要注意的是,一個指針變量只能指向與其數(shù)據(jù)類型相同的變量。一旦一個指針指向某一個變量之后,操作這個指針變量就如同操作其指向的那個變量了。在操作時,我們使用“*指針變量名“的形式進行讀取和寫入,就等同于對指針所指向變量的讀和寫操作。指針變量指向變量的讀取如圖1所示。
圖2-指針變量指向變量的賦值由圖1和圖2中我們可以看出,當指針變量p指向了變量a之后,使用*p進行操作,就如同在操作變量a。以上就是指針變量的操作,非常簡單。需要注意的是,當一個指針被定義好之后,一定要對其進行初始化,即指向某一個變量的地址,沒有指向任何變量的指針被稱為“空指針”,空指針無法去做任何操作,一旦對空指針進行賦值,那么編譯出來的程序?qū)o法使用,如圖3所示。這種沒有指向任何變量的指針被稱為“野指針“,注意不是”空指針“,空指針和野指針是不一樣的指針,野指針是非法的,空指針是合法的,關(guān)于空指針和野指針的區(qū)別為:野指針是不知道指向什么地方的指針,它的出現(xiàn)主要原因是沒有對指針進行初始化,或者指針所指向的內(nèi)存塊被釋放之后,沒有將該指針設(shè)置成空指針。空指針是指指向NULL的指針,NULL為C語言定義的宏,為0,關(guān)于空指針我們后面會詳細講解。我們前面說過,一個變量的地址是當我們在定義這個變量時由編譯器主動隨機分配的,因此如果我們在定義一個指針變量之后,隨意地對其賦值,對于用戶來說,我們不清楚那一塊內(nèi)存地址可用,那一塊不可用。那么這樣操作是不是就是不合法的呢?其實并不是,比如我們在做單片機的時候,某一個外設(shè)的地址你可以從數(shù)據(jù)手冊上面查到,那么我們此時要定義一個指針來指向這個地址,以便給后續(xù)的程序使用,那么這種情況下,我們勢必需要顯示地將一個地址賦值給這個指針變量。反過來說,指針就是由于可以任意地指向任何地方,所以一旦使用不當,比如將一個指針指向一些受保護的內(nèi)存塊并且修改這一塊內(nèi)容,那么會引起一些不可估量的錯誤。如果對一個指針貿(mào)然地賦值一個常量,那么編譯器會不知所措,在這種不知所措之下,編譯器只會報一個警告,這個警告的中文意思就是,將一個int類型的變量賦值給一個(int *)類型的變量,如圖4所示。正確的做法是,我們需要將這個常量強制轉(zhuǎn)換成一個指針類型,關(guān)于強制類型轉(zhuǎn)換其實很簡單,只需要將這個變量或者常量前面用括號加一個你所需要轉(zhuǎn)換的類型即可。如圖5所示。現(xiàn)在我們來做一個實例,先定義一個變量a,假設(shè)這個變量a的地址是我們硬件某一個外設(shè)的地址,我們可以先編程獲取其地址,如圖6所示。接著,我們來定義一個指針變量,并且顯示地將這個地址賦值給這個變量,接著,對這個指針所指向的內(nèi)存進行賦值,我們來看看最終變量a里面的內(nèi)容是否會跟著改變。既然模擬的是硬件,那么此時有個小提示需要注意,我們一定要用“volatile“關(guān)鍵詞來修飾這個內(nèi)存區(qū)域。如圖7所示。看完上述內(nèi)容,你們對C語言中如何使用指針變量有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
分享文章:C語言中如何使用指針變量
轉(zhuǎn)載來源:
http://weahome.cn/article/jhhssh.html