結構體指標本身是結構體嗎

時間 2021-10-27 03:45:24

1樓:

指標就是指標,32位機器上4位元組,64位機器上8位元組。

指標有型別,型別是對編譯器而言,最後編譯後,成為彙編和機器碼,就是沒有型別的東西,可以看看彙編的定址,就是這玩意了。

C艹也是一樣的,但是智慧型指標是用模板類封裝的乙個和指標有一樣行為的類,本質是乙個類,編譯優化後可能和用裸指標一樣的彙編。

2樓:

指向結構體的指標和其他指標本質上並沒有區別,都是32位或者64位的無符號整數。

值得一提的是,指向結構體的指標實際上指向了結構體裡的第乙個成員的起始位址。當你用這個指標引用結構體裡的成員時,CPU會通過這個成員相對於起始位址的偏移量來計算出這個成員實際的記憶體位址。比如題目中提到的結構體,p->y實際上是x的位址加上乙個int的長度(32位或64位)。

3樓:iEcho-42

第34行,這個指標p用Point定義後本身是結構體嗎,如果不是,為什麼呢?

當然不是了,Point *p宣告p是乙個指標,儲存所指向結構體的位址point的記憶體位址是只有乙個嗎?當然只有乙個

參考:1.指標宣告 - cppreference.com

關於結構體的資料對齊?

一般來說,乙個變數只要能保證按自身對齊就夠了。多數變數,不按自身對齊也不會有問題,只不過會降低程式效能。但有些指令,例如 SIMD 系列指令,對對齊有嚴格的要求。所以,你這個問題裡面,char 無論怎麼放都能自身對齊,所以沒任何問題。至於那個 8 位元組對齊,應該指的是 struct 本身。由於 s...

C STL中set是如何判斷兩個結構體相等的?

已登出 set C Reference Internally,the elements in a set are always sorted following a specific strict weak ordering criterion indicated by its internal c...

C語言能否通過結構體實現物件導向程式設計?

藍彼得 能!而且在有些嵌入式系統裡就是這麼做的,因為效能和資源。實際上物件導向語言最終也是通過過程式語言來實現的。用C語言實現物件導向,首先要手動的構建一些基礎設施,比如你要有乙個基類,用巨集 結構和函式指標來封裝基本的物件導向功能。繼承乙個類要遵循你自己定義的程式設計規範,基本上就是繼承父類的結構...