您好,登錄后才能下訂單哦!
在 C 言語中,變量的地址常常多是編譯零碎主動(dòng)分派的,對(duì)我們用戶來說,我們是不曉得某個(gè)變量的詳細(xì)地址的。所以我們界說一個(gè)指針變量 p,把通俗變量 a 的地址直接送給指針變量 p 就是 p = &a;如許的寫法。
關(guān)于指針變量 p 的界說和初始化,普通有兩種方法,這兩種方法,初學(xué)者很輕易混雜,因而這個(gè)中央沒其余辦法,就是融會(huì)貫通,記住即可。
辦法 1:界說時(shí)直接停止初始化賦值。
unsigned char a; unsigned char *p = &a;
辦法 2:界說后再停止賦值。
unsigned char a; unsigned char *p; p = &a;
人人細(xì)心看會(huì)看出來這兩種寫法的差別,它們多是準(zhǔn)確的。我們在界說的指針變量前邊加了個(gè)*,這個(gè)*p 就代表了這個(gè) p 是個(gè)指針變量,不是個(gè)通俗的變量,它是專門用來寄存變量地址的。此外,我們界說*p 的時(shí)分,用了 unsigned char 來界說,這里表現(xiàn)的是這個(gè)指針指向的變量類型是 unsigned char 型的。
指針變量似乎比擬好了解,人人也能很輕易就聽明確。然則為什么許多人弄不明確指針呢?由于在 C 言語中,有一些運(yùn)算和界說,他們是有差別的,許多同窗就是沒弄明確它們的差別,指針就一直學(xué)欠好。這里我要重點(diǎn)強(qiáng)調(diào)兩個(gè)差別,只需把這兩個(gè)差別弄明確了,最少指針變量這局部就不是成績了。這兩個(gè)重點(diǎn)如今人人融會(huì)貫通,直接記住即可,靠了解有能夠混雜概念。
第一個(gè)主要差別:指針變量 p 和通俗變量 a 的差別。
我們界說一個(gè)變量 a,同時(shí)也可以給變量 a 賦值 a = 1,也可以賦值 a = 2。
我們界說一個(gè)指針變量 p,別的還界說了一個(gè)通俗變量 a=1,通俗變量 b=2,那么這個(gè)指針變量可以指向 a 的地址,也可以指向 b 的地址,可以寫成 p = &a,也可以寫成 p = &b,但就是不克不及寫成 p = 1 或許 p = 2 或許 p = a,這三種表達(dá)方法多是錯(cuò)的。
因而這個(gè)中央,不要看到界說*p 的時(shí)分前邊有個(gè) unsigned char 型,就毛病的賦值 p=1,這個(gè)只是闡明 p 指向的變量是這個(gè) unsigned char 類型的,而 p 自身,是指針變量,弗成以給它賦值通俗的值或許變量,后邊我們會(huì)直接把指針變量稱之為指針,人人要留意一下這個(gè)小細(xì)節(jié)。
前邊這個(gè)差別似乎比擬好了解,還有第二個(gè)主要差別,必定要記清晰。
第二個(gè)主要差別:界說指針變量*p 和取值運(yùn)算*p 的差別。
“*”這個(gè)符號(hào),在我們的 C 言語有三個(gè)用法,第一個(gè)用法很復(fù)雜,乘法操作就是用這個(gè)符號(hào),這里就不講了。
第二個(gè)用法,是界說指針變量的時(shí)分用的,比方 unsigned char *p,這個(gè)中央運(yùn)用“*”代表的意思是 p 是一個(gè)指針變量,而非通俗的變量。
還有第三種用法,就是取值運(yùn)算,和界說指針變量是完整兩碼事,比方:
unsigned char a = 1; unsigned char b = 2; unsigned char *p; p = &a; b = *p;
如許兩步運(yùn)算完了之后,b 的值就成了 1 了。在這段代碼中,&a 表現(xiàn)取 a 這個(gè)變量的地址,把這個(gè)地址送給 p 之后,再用*p 運(yùn)算表現(xiàn)的是取指針變量 p 指向的地址的變量的值,又把這個(gè)值送給了 b,最終的后果相當(dāng)于 b=a。異樣是*p,放在界說的地位就是界說指針變量,放在履行代碼中就是取值運(yùn)算。
這兩個(gè)主要差別,人人可以重復(fù)瀏覽三四遍,把這兩個(gè)主要差別弄明確,指針的大門就順?biāo)斓奶こ鰜硪恢荒_了。至于具體的用法,我們后邊用得多了就會(huì)漸漸熟習(xí)起來了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。