本文章為本人原創,適合於剛入坑c語言,對於指標的定義和用法模糊不清的同學,如有不正,請各位指出。
從根本來說,指標變數也是變數,只是int變成了
int *
,以此類推。只不過指標變數裡面放的內容是普通變數在儲存空間的位址(某種奇怪的
16定義指標變數的格式:int/double/...* studentp;
所以在給指標變數賦值的時候就應該:studentp=&student;
那麼如何通過指標來獲取student的值就可以直接:某變數
=*studentp;
這裡一定不要和定義指標變數搞混!!!
函式指標和普通的指標其實一樣,無非就是把函式名給了乙個函式指標變數,在獲取指標變數指向的函式的時候也是指標變數前面加乙個*號
那麼有人問了,我寫的**以前也沒用過指標變數照樣執行,那指標變數是多此一舉的東西嗎?
必然不是的,乙個很經典的問題:swap交換——如果要定義乙個
swap
函式,交換兩個變數的值,如何實現?
有人說以下**就行,並沒有用到指標呀!
1 #include 2輸出:3void swap(int a,int
b);4
int main(void
) 12
void swap(int a,int
b)

答:c語言程式設計是面向過程的程式設計,面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。如果我需要繼續在主函式裡面用到
ab交換完成的值,那麼這個函式寫的就很失敗,而且
c語言返回值只能有乙個,就無法使用返回的操作得到結果。
有人可能會問,為什麼我swap裡面分明讓
ab交換了,結果在
main
函式裡面沒有用呢?
答:這個就涉及到執行機制的原理了,每乙個函式都獨佔乙個記憶體空間,swap空間的ab和
main
空間的ab
顯然不是同一對
ab,所以無論
swap
怎麼折騰都不能影響
main
裡面的東西。
如果用到指標變數的話,那麼結果就會不一樣。
現在更改成指標變數的**:
1 #include 2輸出:3void swap(int *a,int *b);
4int main(void
) 12
13void swap(int *a,int *b)

這裡swap的兩個形參是指標變數,用於接收
main
函式傳來的
a(main)
和b(main)
的位址,
swap
中指標變數
a(swap)
和b(swap)
存著a(main)
和b(main)
的位址,從而通過*a和
*b的方式直接更改
main
中a(main)
和b(main)
的值。這就是運用指標的好處。
C語言 指標理解
剛剛程式設計遇到了乙個問題,如下 include struct nodetree 101 int loc node creat bool build node t,char c return true intmain return0 預期結果,我本來想達到一種效果,就是將t傳進去,然後對t做修改,返...
C語言 指標入門
在我年輕的時候,我三次鼓起勇氣學習c,三次都倒在了指標上 雖然很清楚指標是一種存放位址的變數,但是他具體是乙個什麼意思呢?我把整個空間看成乙個 n 1 維的空間。n 是資料型別,可能是int,char,double,等等。1 是位址。把位址看成一根數軸。舉個粒子 int pa int a 5 pa ...
C語言 指標入門
指標是乙個用來指示乙個記憶體位址的計算機語言的變數或 處理器中的暫存器。簡單來說,指標 位址 指標是一種變數,也有資料型別和相應的位址。1.指標變數的定義 定義普通變數格式為 資料型別 變數名 指標變數定義如下 int p1 定義了乙個整型指標變數p1 char p2 定義了乙個字元型指標變數p2 ...