征服c指針_紅黑聯(lián)盟讀書(shū)頻道
本文關(guān)鍵詞:深入理解C指針,由筆耕文化傳播整理發(fā)布。
> c語(yǔ)言 > 深入理解C指針 1. 理解size_t 2014-02-19 11:37:03 我要投稿
本文所屬圖書(shū) > 深入理解C指針
指針是C 語(yǔ)言的一項(xiàng)核心特性,對(duì)于指針的掌握程度是區(qū)分C 語(yǔ)言新手與老手的重要標(biāo)志。本書(shū)專(zhuān)門(mén)研究指針,旨在提供比其他圖書(shū)更全面和深入的C 指針和內(nèi)存管理知識(shí)。全書(shū)巨細(xì)靡遺地為讀者展現(xiàn)了C 語(yǔ)言編程中最 立即去當(dāng)當(dāng)網(wǎng)訂購(gòu)
size_t 類(lèi)型表示C 中任何對(duì)象所能達(dá)到的最大長(zhǎng)度。它是無(wú)符號(hào)整數(shù),因?yàn)樨?fù)數(shù)在這里沒(méi)有意義。它的目的是提供一種可移植的方法來(lái)聲明與系統(tǒng)中可尋址的內(nèi)存區(qū)域一致的長(zhǎng)度。size_t 用做sizeof 操作符的返回值類(lèi)型,同時(shí)也是很多函數(shù)的參數(shù)類(lèi)型,包括malloc 和strlen。
在聲明諸如字符數(shù)或者數(shù)組索引這樣的長(zhǎng)度變量時(shí)用size_t 是好的做法。它經(jīng)常用于循環(huán)計(jì)數(shù)器、數(shù)組索引,,有時(shí)候還用在指針?biāo)阈g(shù)運(yùn)算上。
size_t 的聲明是實(shí)現(xiàn)相關(guān)的。它出現(xiàn)在一個(gè)或多個(gè)標(biāo)準(zhǔn)頭文件中,比如stdio.h 和stblib.h,典型的定義如下:
#ifndef __SIZE_T
#define __SIZE_T
typedef unsigned int size_t;
#endif
define 指令確保它只被定義一次。實(shí)際的長(zhǎng)度取決于實(shí)現(xiàn)。通常在32 位系統(tǒng)上它的長(zhǎng)度是32 位,而在64 位系統(tǒng)上則是64 位。一般來(lái)說(shuō),size_t 可能的最大值是SIZE_MAX。
通常size_t 可以用來(lái)存放指針,但是假定size_t 和指針一樣長(zhǎng)不是個(gè)好主意。稍后的“使用sizeof 操作符和指針”會(huì)講到,intptr_t 是更好的選擇。
打印size_t 類(lèi)型的值時(shí)要小心。這是無(wú)符號(hào)值,如果選錯(cuò)格式說(shuō)明符,可能會(huì)得到不可靠的結(jié)果。推薦的格式說(shuō)明符是%zu。不過(guò),某些情況下不能用這個(gè)說(shuō)明符, 作為替代,可以考慮%u 或%lu。
下面這個(gè)例子將一個(gè)變量定義為size_t,然后用兩種不同的格式說(shuō)明符來(lái)打。
size_t sizet = -5;
printf("%d\n",sizet);
printf("%zu\n",sizet);
因?yàn)閟ize_t 本來(lái)是用于表示正整數(shù)的,如果用來(lái)表示負(fù)數(shù)就會(huì)出問(wèn)題。如果為其賦一個(gè)負(fù)數(shù),然后用%d 和%zu 格式說(shuō)明符打印,就得到如下結(jié)果:
-5
4294967291
%d 把size_t 當(dāng)做有符號(hào)整數(shù),它打印出-5 因?yàn)樽兞恐写娣诺木褪?5。%zu 把size_t 當(dāng)做無(wú)符號(hào)整數(shù)。當(dāng)-5 被解析為有符號(hào)數(shù)時(shí),高位置為1,表示這個(gè)數(shù)是負(fù)數(shù)。當(dāng)它被解析為無(wú)符號(hào)數(shù)時(shí),高位的1 被當(dāng)做2 的乘冪。所以在用%zu 格式說(shuō)明符時(shí)才會(huì)看到那個(gè)大整數(shù)。
正數(shù)會(huì)正常顯示,如下所示:
sizet = 5;
printf("%d\n",sizet); // 顯示5
printf("%zu\n",sizet); // 顯示5
因?yàn)閟ize_t 是無(wú)符號(hào)的,一定要給這種類(lèi)型的變量賦正數(shù)。
點(diǎn)擊復(fù)制鏈接 與好友分享!回本站首頁(yè) 您對(duì)本文章有什么意見(jiàn)或著疑問(wèn)嗎?請(qǐng)到論壇討論您的關(guān)注和建議是我們前行的參考和動(dòng)力 上一篇:1.2.2 指針相關(guān)的預(yù)定義類(lèi)型 下一篇:2. 對(duì)指針使用sizeof操作符 相關(guān)文章1.1.1 共享內(nèi)存多核系統(tǒng)與分布式內(nèi)
1.1.2 并行程序設(shè)計(jì)和多核程序設(shè)計(jì)
1.3 理解Amdahl法則
1.4 考慮Gustafson法則
1.6.1 以并發(fā)的思想指導(dǎo)設(shè)計(jì)
1.1 開(kāi) 發(fā) 背 景
1.2.1 需求分析
1.2.2 可行性分析
1.2.3 編寫(xiě)項(xiàng)目計(jì)劃書(shū)
1.3.1 系統(tǒng)目標(biāo)
圖文推薦本文關(guān)鍵詞:深入理解C指針,由筆耕文化傳播整理發(fā)布。
本文編號(hào):156429
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/156429.html