終於搞懂了困惑已久的c語言中的關於指標的那幾個變數

2021-09-29 11:38:06 字數 1046 閱讀 7879

學c語言時,學到指標時,理解不了指標,還老是把關於指標的變數弄混,接下來先看看**,再解釋**中的錯誤,

解釋之前,我想和你們通俗易懂的說說我在學習中經常弄混的幾個概念

(下面說的星q 指的是 *q)

位址是什麼,指標又是什麼,而位址變數和指標變數一樣嗎,int p;中的p代表什麼,int * q;中的q又代表什麼, 如果q指向p的位址,星q 與p,q與p又是什麼關係?

不知道這些問題,你們在學指標時會不會感到困惑?

首先,先說一下位址與指標的關係,指標就是位址,位址就是乙個值,也可以說是乙個記憶體單元的編號,以十六進製制的形式存放(比如0x99),所以說,指標也是乙個值而已,

指標變數也是許多人在學習指標的過程中弄混的,這兩個不是同乙個東西,前者是乙個值,後者是乙個變數,變數是可以存放值的,比如int存放的是整形變數,int p;p就是乙個整形變數,但是要注意,我們通常說的指標變數簡稱為指標,但是切記兩者不是同一概念

接下來,說說星q 是個什麼玩意,許多人可能把他當成乙個變數使用,如果是這樣,那豈不是和q是個變數就矛盾了啊,所以說星q 可以理解為一種規定的語法吧,星q就等同於上面的乙個整形變數p,即星q =p;下面來看一張圖,就很明白了

所以,最後,你知道**報錯的原因了吧,**中的q是乙個位址變數,是存放整形的位址變數,而p是個整形變數,相同點都是變數,q指向了p,q存放了p的位址。

總結一下

1.指標變數也是乙個變數,是存放位址的變數,(有點廢話了,哈哈)

2.q不是p,修改q也不影響p的值,同樣的,修改p也不會影響q的值

3,在*q出現的地方都可以用p代替,反過來亦然

若有疑問,多多分享哈

Lua的閉包詳解(終於搞懂了)

詞法定界 當乙個函式內巢狀另乙個函式的時候,內函式可以訪問外部函式的區域性變數,這種特徵叫做詞法定界 table.sort names,functin n1,n2 return grades n1 grades n2 end 內部匿名函式可以訪問外部函式的n1,n2 第一類值 lua當中函式是乙個值...

終於搞懂了鍊錶(頭結點的重要性 課後筆記)

此圖為上面 的實行結果,我反覆檢查了乙個小時,一次一次的試錯中,感覺怎麼檢查都沒錯的時候,我開始確定是最開始建立鍊錶的時候,是不是當時建立鍊錶就出現了問題,於是我開始檢查起鍊錶的迴圈輸入時,for迴圈的最後,我將p指向a,此時就代表將頭結點的p重新又將其指向了尾結點,這樣一來輸出的肯定是空啊,這時候...

一直沒有搞懂的C語言引數傳遞,今天終於明白了

本講我們和大家一起來聊一聊c語言中有關引數傳遞的一些知識。1.問題引入 請寫出以下程式的列印結果。include 將某整數加10 void add by 10 int a a a 10 int main int argc,char ar int a 2 add by 10 a printf a d ...