c 指標空間大小的決定因素

2021-08-22 15:22:22 字數 782 閱讀 7455

在學習apue的11.5 threads時,有乙個例項**,其中有乙個列印位址fp的語句printf(" structure at 0x%lx\n", (unsigned long)fp);為什麼要將指標變數fp強制轉換為unsigned long再列印呢,(為了相容unix的各種分支平台)以前學習c語言的經驗是指標變數占用空間大小是4個位元組,查閱資料後發現:

void

printfoo(const char *s, const struct foo *fp)

指標的空間大小沒有固定的值,它取決於體系結構、編譯器實現、指標的型別(指向不同型別變數的指標不一定有相同的空間大小或表示方法)

例如,假設有乙個word-addressed architecture,where最小的儲存位址單元是16位,每乙個字可以儲存多個char型別的變數,所有其他型別佔據一整個字或者多個字,在這樣的體系結構中,乙個指標型的變數可能需要一些額外的位表示字裡面的偏移量

還有就是乙個指標型別的變數的位數可能比實際上需要的用來儲存乙個位址的位數多,最初是的執行在motorola 68000cpu上的macintosh系統的字大小為32位,但是僅有24位屬於位址匯流排,指標型別是32位寬,其中有8個位沒有使用,macos程式設計師利用了這個特性來儲存一些資料,利用乙個指標型別的高位元組位址,充分利用了寶貴的128位元組的隨機訪問儲存空間,後來motorola最終發布了乙個32位位址線的cpu,意味著那些**需要重寫。

c99提供了intptr_t和uintptr_t型別,是整數,並且保證足夠寬以滿足存放乙個指標變數。

李嘉誠 性格才是命運的決定因素

與李嘉誠在一起的時間,你很少能感覺到本應屬於華人首富的巨大自我。他的言語 目光和笑容,都不免讓人產生疑問 早年經受的戰亂 苦難,以及隨後六十六年的辛苦工作,這些負面影響究竟是被一種怎樣的力量化解,而沒有讓他成為乙個性格極端的人?是命運?在很多場合,李都會提到自己的一生 蒙上天眷顧 但李嘉誠回答說 性...

李嘉誠 性格才是命運的決定因素

與李嘉誠在一起的時間,你很少能感覺到本應屬於華人首富的巨大自我。他的言語 目光和笑容,都不免讓人產生疑問 早年經受的戰亂 苦難,以及隨後六十六年的辛苦工作,這些負面影響究竟是被一種怎樣的力量化解,而沒有讓他成為乙個性格極端的人?是命運?在很多場合,李都會提到自己的一生 蒙上天眷顧 但李嘉誠回答說 性...

資料分析師的薪資決定因素

首先我們從公司規模分析。一般平均工資幾乎是越大的公司工資越高。公司越大,資料分析這個崗位的職責越清晰,所需的技能越專業,工資越高。而對於需求方面,發現不是越大的公司,需求越高,而是正在處於發展期的公司,資料分析對於公司的發展方向 規劃起著比較重要的作用,所以工資高。其次我們從學歷分析。資資料分析崗位...