菜鳥的學習心得之為什麼定義指標型別

2021-07-22 23:15:08 字數 1140 閱讀 999

在這裡,我想跟大家分享一下我的學習心得,我是剛剛學習c語言的菜鳥,認識到的比較淺薄,希望大家可以一起學習,同時也記錄了我的學習過程。我們都知道資料有資料型別,比如有整型、字元型、單精度浮點型、雙精度浮點型等等,在32位的機器中整型占用四個位元組,字元型乙個位元組,單精度浮點型占用四個位元組,雙精度浮點型占用八個位元組。會有不同的資料型別,是因為可以節省空間。例如,性別有男,女之分,那麼兩個位元位就可以把性別表示出來,比如00表示男,01表示女,還剩下11,10沒有用到。我們知道乙個位元組有8個位元位,那麼乙個位元組就可以足夠表示了,也就是字元型就可以了。可如果沒有資料型別,比如全部都是整型,都是四個位元組,那麼顯然四個位元組表示性別特別浪費空間。當然指標也會有指標型別,指標也有整型指標、字元型指標、浮點型指標等等。但是無論雖然指標型別不同但是同樣占用四個位元組的空間,那麼既然這樣也不能節省空間,為什麼要定義指標型別呢?

接下來看兩個**,

#include

int main()

int num=0x11223344;   //記憶體中num存放為44332211

int*p=#

*p=0x55;//執行此語句後記憶體中num存放為55000000

return 0;

這段**,整型的指標指向整型沒問題,可以看到num毫無疑問的在記憶體中變成了55000000 ,接下來我們用乙個字元型的指標指向整型的num。字元型的指標也是四個位元組,對於32位的機器,足夠放下任何乙個位址,所以這種字元型的指標指向整型在.c檔案中是可以編譯通過並且可以執行的。

#include

int main()

int num=0x11223344;   //記憶體中num存放為44332211

char*p=#

*p=0x55;//執行此語句後記憶體中num存放為55332211

return 0;

我們可以看到這時候num在記憶體中只改變了乙個位元組,而其他位元組沒有變。這時候我們意識到,不同的指標型別就是用不同的視角進行操作。字元型的指標以字元的視角進行操作。也就是說以乙個位元組進行操作,所以只改變了乙個位元組。而整型指標則以整型的視角進行操作,即以四個位元組進行操作,所以num四個位元組都發生改變。對於指標的運算也是如此,位元組型指標p1,當p1+1時,是向後數乙個位元組,而整型指標p2,當p2+1時,是向後數四個位元組。

如果有瑕疵還希望批評改正。這僅僅是我個人的理解。謝謝。

Kali Linux學習心得 為什麼又開始搞安全

好久沒上招聘 了,這兩天看了看,發現搞安全的還是很吃香的啊!所以從今天開始再搞搞安全吧,那會考ccie是因為喜歡網路。可是為什麼喜歡網路呢還不是以前痴迷網路安全嘛!2014年9月24日至25日,亞太資訊保安領域最權威的年度峰會 2014中國網際網路安全大會 isc 2014 在北京國家會議中心召開。...

乙隻菜鳥的RapidXML的學習心得

開篇前言 在工作當中程式設計也差不多兩年了,但是這兩年來,感覺自己的c 程式設計能力還是不夠好。開始一直覺得是自己的基礎知識還是不夠,但是基礎知識的書籍我也看了不少,可能自己沒有用心還是理解能力不足,所以老是感覺看了那麼多書籍也沒有多大的進步,通過多番在網上查詢和同事之間討教之後,他們都說要多進行程...

python學習 類中為什麼要定義 init

總結一下,加上 init 方法後,類才可以例項化,不加類就是個空殼,相當於乙個方法集合 學習python的類,一直不太理解為什麼一定要定義init 方法,現在簡要談一下自己的理解吧。1 不用init 方法定義類 定義乙個矩形的類,目的是求周長和面積。class rectangle def getpe...