對于C內(nèi)置的數(shù)據(jù)類型:int、char、float...
不同類型所占內(nèi)存不同,不同類型的值在計算機中存儲和讀取的方式也不同
但是對于指針的類型:int*、char*...
無論哪種類型的指針他們的值都是一種類型:地址編號,那么在計算機中的存取方式也是相同的
所占的內(nèi)存大小在同一架構(gòu)下也都是一樣的(4or8字節(jié)),那么指針還分那么多的類型的意義是什么呢?
意義有兩個:
?1.不同類型的指針,在解引用時訪問的內(nèi)存大小不同
?如:int a; char* p=(char*)&a;
&a本身是一個int*的類型,但通過強制類型轉(zhuǎn)換賦值給char*類型的指針p
那么解引用時,*p這個操作只能訪問變量a中的一個字節(jié),而a本身是有四個字節(jié)的內(nèi)存空間
關(guān)于訪問的是a所占的四個字節(jié)中的哪一個字節(jié),這與大小端字節(jié)序存儲有關(guān),此處不詳談
?2.不同類型的指針,決定了指針±整數(shù)時跨越的步長(多少字節(jié))
一般情況下,我們都會將指針類型與其所指向的數(shù)據(jù)類型對應
如int型的變量,存儲其地址的指針,一般定義為int*類型
這樣做的好處是,在連續(xù)的內(nèi)存空間中,指針±整數(shù)時,指針就會指向下一個元素的地址
以上就指針類型的意義,可以靈活的控制要訪問一個數(shù)據(jù)中的多少內(nèi)存
??? ??? ? 當指針類型與其所指向的數(shù)據(jù)類型對應時,可以在連續(xù)的內(nèi)存空間中指向程序員想指的元素
這也是為什么C語言強大的原因之一,靈活度非常高
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧