C語言入門理解指標

2022-02-24 01:39:56 字數 1687 閱讀 4790

本文章為本人原創,適合於剛入坑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 ...