日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

求某类型变量的大小(是否使用sizeof)

發(fā)布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求某类型变量的大小(是否使用sizeof) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?sizeof與strlen

strlen("\0") =? sizeof("\0")=?

strlen("\0") =0,sizeof("\0")=2。

strlen用來計算字符串的長度(在C/C++中,字符串是以"\0"作為結(jié)束符的),它從內(nèi)存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內(nèi)存區(qū)域)開始掃描直到碰到第一個字符串結(jié)束符\0為止,然后返回計數(shù)器值sizeof是C語言的關(guān)鍵字,它以字節(jié)的形式給出了其操作數(shù)的存儲大小,操作數(shù)可以是一個表達(dá)式或括在括號內(nèi)的類型名,操作數(shù)的存儲大小由操作數(shù)的類型決定。

sizeof和strlen有什么區(qū)別?

strlen與 sizeof的差別表現(xiàn)在以下5個方面。

  • sizeof是運(yùn)算符(是不是被弄糊涂了?事實上, sizeof既是關(guān)鍵字,也是運(yùn)算符,但不是函數(shù)),而strlen是函數(shù)。 sizeof后如果是類型,則必須加括弧,如果是變量名,則可以不加括弧。

  • sizeof運(yùn)算符的結(jié)果類型是 size_t,它在頭文件中 typedef為 unsigned int類型。該類型保證能夠容納實現(xiàn)所建立的最大對象的字節(jié)大小

  • sizeof可以用類型作為參數(shù), strlen只能用char*作參數(shù),而且必須是以“0結(jié)尾的。 sizeof還可以以函數(shù)作為參數(shù),如int g(),則 sizeof(g())的值等于 sizeof( int的值,在32位計算機(jī)下,該值為4。

  • 大部分編譯程序的 sizeof都是在編譯的時候計算的,所以可以通過 sizeof(x)來定義數(shù)組維數(shù)。而 strlen則是在運(yùn)行期計算的,用來計算字符串的實際長度,不是類型占內(nèi)存的大小。例如, char str[20] = "0123456789”,字符數(shù)組str是編譯期大小已經(jīng)固定的數(shù)組,在32位機(jī)器下,為 sizeof(char)20=20,而其 strlen大小則是在*運(yùn)行期**確定的,所以其值為字符串的實際長度10。

  • 當(dāng)數(shù)組作為參數(shù)傳給函數(shù)時,傳遞的是指針,而不是數(shù)組,即傳遞的是數(shù)組的首地址。

  • 作者:嵌入式與Linux那些事

    鏈接:https://www.nowcoder.com/discuss/641248?source_id=profile_create_nctrack&channel=-1

    來源:牛客網(wǎng)

    不使用 sizeof,如何求int占用的字節(jié)數(shù)??

    #include <stdio.h> #define MySizeof(value) (char *)(&value+1)-(char*)&value int main() {int i;double f;double *q;printf("%d\r\n", MySizeof(i));printf("%d\r\n", MySizeof(f));printf("%d\r\n", MySizeof(q));return 0; }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的求某类型变量的大小(是否使用sizeof)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。