---------------start reading--------------
前言對於乙個c語言新手,許多人會有困惑,我們為什麼要用指標,直接用變數定義不是更方便嗎?那麼今天就讓我們來認識一下指標的作用,你便知道指標是多麼的不可或缺了。
首先讓我們來了解一下指標的大小
指標的大小依據平台來決定可能是4個位元組,可能是8個位元組
x86中指標是32個位元組,x64中指標是64個位元組
接下來讓我們來看乙個示例,感受一下指標的必要性
這是乙個交換函式
#includevoid exchange(int a ,int b)
int main()
但他的執行結果卻沒有交換
這說明功能函式並沒有起到交換的功能
讓我們來剖析一下編譯器內部的操作情況
編譯器傳參給功能函式,功能函式中的數字交換卻沒有影響到主函式,這就給我們造成了一種假象,事實上函式的功能並沒有實現。要想實現這個函式的功能,我們要引用指標
#includevoid exchange(int *p1 ,int *p2)
int main()
編譯結果仍然為10,20。這是因為功能函式只交換了p1p2的位址並沒有交換裡面的內容,編譯器執行狀況如圖
再來看乙個功能函式
void exchange(int *p1 ,int *p2)
這個**不能通過編譯,因為int *tmp=*p
沒有初始化,沒有給*tmp位址,我們稱這種指標為野指標,懸掛指標,沒有位址訪問權。
那麼想要實現交換函式應該怎樣做才正確呢?
這裡,我們就要提到指標的作用:解決父函式,子函式的值傳遞
子函式的改變,能夠影響父函式,一定要傳遞指標(位址)和解引用,兩個條件缺一不可
正確的方法來啦
void exchange(int *p1 ,int *p2)
交換結果為20,10
小結:指標作用:解決父函式子函式的值傳遞問題
進行值傳遞必須要有傳遞指標和解引用兩個步驟,缺一不可
傳遞時實參為位址,要用&。
---------------end---------------
C語言基礎 指標基礎
最小儲存單位 bit 即 0 1 基本儲存單位 byte 1byte 8bit 注 計算機訪問的資料是byte位數定義變數 分配儲存空間 引用變數 通過變數名引用變數的內容即變數空間的首位址 為常量,即 變數名 專門儲存位址常量的變數型別 變數名所有指標變數均分配4byte的儲存空間 與其他變數相同...
C語言指標基礎
c語言指標 前導程式 1 include2 3 4 5 void change int 6 7 int main 8 9 20 21 22 23 void change int n 24 25 30 31 一 基本知識點 int a 10 int p 定義乙個int型別的指標 p a 指標變數p指向...
C語言指標基礎
c語言指標 前導程式 includevoid change int int main void change int n 一 基本知識點 int a 10 int p 定義乙個int型別的指標 p a 指標變數p指向了變數a p 20 使用指標不通過變數直接修改變數a的值為20 p表示訪問指標變數p...