亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

基于Sizeof與Strlen的區(qū)別以及聯(lián)系的使用詳解

2020-01-26 16:17:29
字體:
供稿:網(wǎng)友

一、sizeof
    sizeof(...)是運(yùn)算符,在頭文件中typedef為unsigned int,其值在編譯時(shí)即計(jì)算好了,參數(shù)可以是數(shù)組、指針、類型、對(duì)象、函數(shù)等。
    它的功能是:獲得保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。
    由于在編譯時(shí)計(jì)算,因此sizeof不能用來返回動(dòng)態(tài)分配的內(nèi)存空間的大小。實(shí)際上,用sizeof來返回類型以及靜態(tài)分配的對(duì)象、結(jié)構(gòu)或數(shù)組所占的空間,返回值跟對(duì)象、結(jié)構(gòu)、數(shù)組所存儲(chǔ)的內(nèi)容沒有關(guān)系。
    具體而言,當(dāng)參數(shù)分別如下時(shí),sizeof返回的值表示的含義如下:
    數(shù)組――編譯時(shí)分配的數(shù)組空間大?。?BR>    指針――存儲(chǔ)該指針?biāo)玫目臻g大?。ù鎯?chǔ)該指針的地址的長度,是長整型,應(yīng)該為4);
    類型――該類型所占的空間大?。?BR>    對(duì)象――對(duì)象的實(shí)際占用空間大??;
    函數(shù)――函數(shù)的返回類型所占的空間大小。函數(shù)的返回類型不能是void。
**************

二、strlen
    strlen(...)是函數(shù),要在運(yùn)行時(shí)才能計(jì)算。參數(shù)必須是字符型指針(char*)。當(dāng)數(shù)組名作為參數(shù)傳入時(shí),實(shí)際上數(shù)組就退化成指針了。
    它的功能是:返回字符串的長度。該字符串可能是自己定義的,也可能是內(nèi)存中隨機(jī)的,該函數(shù)實(shí)際完成的功能是從代表該字符串的第一個(gè)地址開始遍歷,直到遇到結(jié)束符NULL。返回的長度大小不包括NULL。
*****************

三、舉例:
    eg1、char arr[10] = "What?";
              int len_one = strlen(arr);
              int len_two = sizeof(arr);
              cout << len_one << " and " << len_two << endl;
    輸出結(jié)果為:5 and 10
    點(diǎn)評(píng):sizeof返回定義arr數(shù)組時(shí),編譯器為其分配的數(shù)組空間大小,不關(guān)心里面存了多少數(shù)據(jù)。strlen只關(guān)心存儲(chǔ)的數(shù)據(jù)內(nèi)容,不關(guān)心空間的大小和類型。

    eg2、char * parr = new char[10];
              int len_one = strlen(parr);
              int len_two = sizeof(parr);
              int len_three = sizeof(*parr);
              cout << len_one << " and " << len_two << " and " << len_three << endl;
    輸出結(jié)果:23 and 4 and 1
    點(diǎn)評(píng):第一個(gè)輸出結(jié)果23實(shí)際上每次運(yùn)行可能不一樣,這取決于parr里面存了什么(從parr[0]開始知道遇到第一個(gè)NULL結(jié)束);第二個(gè)結(jié)果實(shí)際上本意是想計(jì)算parr所指向的動(dòng)態(tài)內(nèi)存空間的大小,但是事與愿違,sizeof認(rèn)為parr是個(gè)字符指針,因此返回的是該指針?biāo)嫉目臻g(指針的存儲(chǔ)用的是長整型,所以為4);第三個(gè)結(jié)果,由于*parr所代表的是parr所指的地址空間存放的字符,所以長度為1。
************

四、參考資料:
Sizeof與Strlen的區(qū)別與聯(lián)系(轉(zhuǎn))

1.sizeof操作符的結(jié)果類型是size_t,它在頭文件中typedef為unsigned int類型。
該類型保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。

2.sizeof是算符,strlen是函數(shù)。

3.sizeof可以用類型做參數(shù),strlen只能用char*做參數(shù),且必須是以''/0''結(jié)尾的。
sizeof還可以用函數(shù)做參數(shù),比如:
short f();
printf("%d/n", sizeof(f()));
輸出的結(jié)果是sizeof(short),即2。

4.數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針了。

5.大部分編譯程序 在編譯的時(shí)候就把sizeof計(jì)算過了 是類型或是變量的長度這就是sizeof(x)可以用來定義數(shù)組維數(shù)的原因
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;

6.strlen的結(jié)果要在運(yùn)行的時(shí)候才能計(jì)算出來,時(shí)用來計(jì)算字符串的長度,不是類型占內(nèi)存的大小。

7.sizeof后如果是類型必須加括弧,如果是變量名可以不加括弧。這是因?yàn)閟izeof是個(gè)操作符不是個(gè)函數(shù)。

8.當(dāng)適用了于一個(gè)結(jié)構(gòu)類型時(shí)或變量, sizeof 返回實(shí)際的大小,
當(dāng)適用一靜態(tài)地空間數(shù)組, sizeof 歸還全部數(shù)組的尺寸。
sizeof 操作符不能返回動(dòng)態(tài)地被分派了的數(shù)組或外部的數(shù)組的尺寸

9.數(shù)組作為參數(shù)傳給函數(shù)時(shí)傳的是指針而不是數(shù)組,傳遞的是數(shù)組的首地址,
如:
fun(char [8])
fun(char [])
都等價(jià)于 fun(char *)
在C++里參數(shù)傳遞數(shù)組永遠(yuǎn)都是傳遞指向數(shù)組首元素的指針,編譯器不知道數(shù)組的大小
如果想在函數(shù)內(nèi)知道數(shù)組的大小, 需要這樣做:
進(jìn)入函數(shù)后用memcpy拷貝出來,長度由另一個(gè)形參傳進(jìn)去
fun(unsiged char *p1, int len)
{
unsigned char* buf = new unsigned char[len+1]
memcpy(buf, p1, len);
}

我們能常在用到 sizeof 和 strlen 的時(shí)候,通常是計(jì)算字符串?dāng)?shù)組的長度
看了上面的詳細(xì)解釋,發(fā)現(xiàn)兩者的使用還是有區(qū)別的,從這個(gè)例子可以看得很清楚:

char str[20]="0123456789";
int a=strlen(str); //a=10; >>>> strlen 計(jì)算字符串的長度,以結(jié)束符 0x00 為字符串結(jié)束。
int b=sizeof(str); //而b=20; >>>> sizeof 計(jì)算的則是分配的數(shù)組 str[20] 所占的內(nèi)存空間的大小,不受里面存儲(chǔ)的內(nèi)容改變。

上面是對(duì)靜態(tài)數(shù)組處理的結(jié)果,如果是對(duì)指針,結(jié)果就不一樣了

char* ss = "0123456789";
sizeof(ss) 結(jié)果 4 ===》ss是指向字符串常量的字符指針,sizeof 獲得的是一個(gè)指針的之所占的空間,應(yīng)該是

長整型的,所以是4
sizeof(*ss) 結(jié)果 1 ===》*ss是第一個(gè)字符 其實(shí)就是獲得了字符串的第一位'0' 所占的內(nèi)存空間,是char類

型的,占了 1 位

strlen(ss)= 10 >>>> 如果要獲得這個(gè)字符串的長度,則一定要使用 strlen

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

日韩欧美在线字幕| 国产精品波多野结衣| 欧洲性xxxx| 国产成人精品免高潮费视频| 国产精品免费不| 番号集在线观看| 日韩国产精品亚洲а∨天堂免| 黄色的视频在线观看免费| 国产精品999久久久| 911精品国产一区二区在线| 国产精品日日做人人爱| 国产精品久久在线观看| 日韩欧美国产成人一区二区| 99久久亚洲一区二区三区青草| 精品久久久三级丝袜| 日本中文在线视频| 国产一区深夜福利| 91精品国产自产在线观看永久∴| 国产精品伦理一区二区| 国产小视频免费在线网址| 中文字幕亚洲一区在线观看| 亚洲天堂视频在线播放| 深夜福利91大全| 亚洲午夜成aⅴ人片| 天天射成人网| 日韩精品视频在线观看视频| 国产日韩精品久久| 中文字幕黄色大片| gogo亚洲高清大胆美女人体| 舐め犯し波多野结衣在线观看| 视频一区视频二区视频三区视频四区国产| 亚洲午夜女主播在线直播| 国产激情精品一区二区三区| 蜜臀av午夜精品久久| av在线天堂播放| 深夜视频在线观看| 国产aaaaaaaaa| 国产精品入口麻豆免费| 秋霞午夜电影| 亚洲成人久久网| 好男人中文字幕官网| 91九色国产视频| 亚洲精品激情| 午夜视频久久久| 欧美特大特白屁股xxxx| 一区二区三区视频在线观看免费| www色啪啪| 欧美日韩a区| 九九久久精品视频| 久久精品青草| 在线精品在线| 999国产精品永久免费视频app| 国产一级做a爰片久久毛片男| 日韩网红少妇无码视频香港| 国产欧美午夜| 国产成人精品一区二区三区在线观看| 香港三级经典全部种子下载| 亚洲一| 影音先锋国产在线| 糖心vlog在线免费观看| 黄色羞羞视频在线观看| 中文字幕乱码一区二区三区| 91精品国产色综合| 国产亚洲精品v| 性视频1819p久久| 影音日韩av| 一区二区久久久久久| siro系绝美精品系列| 免费在线黄色网址| 在线观看特色大片免费视频| 中国一级特黄视频| 国产精品日韩三级| 成人动漫视频在线观看| 国产精品久久看| 欧美一级高清片在线观看| 999成人精品视频线3| xvideos入口| 懂色av中文一区二区三区天美| 夜夜精品浪潮av一区二区三区| 欧美激情第3页| 免费看污网站| 色欧美88888久久久久久影院| 成人看片免费| 久色乳综合思思在线视频| 四虎在线免费看| 国产欧美一区二区精品婷婷| 在线观看你懂的网站| 丝袜亚洲精品中文字幕一区| 三级成人在线视频| 国产精品蜜月aⅴ在线| 91精品国产自产91精品| 欧美一级大片在线免费观看| 青草在线视频| 国产一区二区免费电影| 农村少妇久久久久久久| 国产精品888| 欧美日韩精品在线一区二区| 亚洲影院理伦片| 日本一区二区三区久久| 在线日本制服中文欧美| 天天综合色天天综合色h| 日韩欧美电影| 亚洲大奶少妇| 狠狠狠狠狠狠狠| 欧美绝品在线观看成人午夜影视| 思思99热久久精品在线6| 日韩精品视频久久| 久久久美女毛片| a在线观看免费视频| 国产精品性做久久久久久| 91视频最新网址| 亚洲精品欧美二区三区中文字幕| 日韩人在线观看| www.欧美色图| 亚洲av无一区二区三区| 成人久久精品视频| 欧美日韩国产一中文字不卡| 久久久久久久久久久妇女| 艳女tv在线观看国产一区| 欧性猛交ⅹxxx乱大交| 激情在线视频播放| 精品中文字幕人| 91久久精品一区二区二区| 成片免费观看| 欧美 日韩 国产 成人 在线观看| 污黄视频在线观看| 日韩美女一区二区三区在线观看| 久久久www成人免费毛片麻豆| 丁香高清在线观看完整电影视频| 亚洲欧美日韩激情| 国产99久久久| 国产精品无码白浆高潮| 国产欧美一区二区精品性色超碰| 精品视频一区二区三区四区五区| 欧美日韩破处视频| 在线精品视频免费观看| 欧美一区成人| 自拍偷拍一区| 毛片手机在线观看| 国产一级淫片免费| 国产亚洲色婷婷久久99精品91| 国产成人精品一区二区三区视频| 五月精品视频| 欧美日韩在线精品一区二区三区激情综| 蜜臀av国内免费精品久久久夜夜| 伊人成人开心激情综合网| 亚洲欧洲中文字幕| 麻豆视频在线| 巨大黑人极品videos精品| 精品剧情在线观看| 天天综合视频在线观看| 激情偷乱视频一区二区三区| 久久久国产精华| 亚洲黄色一区二区| av电影在线播放| 亚洲乱码国产乱码精品天美传媒| 亚洲人体偷拍| 成人网6969conwww| 欧美r级电影| 男人av资源站| xfplay爱情电影网love| 国内免费久久久久久久久久久| 九色国产在线观看| seseavlu视频在线| 日韩欧美国产午夜精品| 国产99久久精品| av最新在线观看| 日本美女在线中文版| 99热免费观看| 手机毛片在线观看| 欧美成人性生活视频| 在线天堂www在线国语对白| 午夜免费看视频| 成人自拍视频网| 亚洲乱码一区二区| 四虎成人精品在永久在线观看| 日韩高清在线一区| 欧洲日本亚洲国产区| 电影中文字幕一区二区| 国内国产精品天干天干| 国产精品中文字幕欧美| 久久国产精品第一页| 2022中文字幕| 午夜精品视频网站| 我想看黄色大片| 亚洲精品一二三| 午夜免费播放观看在线视频| 午夜视频在线观看精品中文| 日本免费新一区视频| 色天天综合久久久久综合片| 国产精品视频一区二区三区综合| 国产成人影院| 91wwwcom在线观看| 国产日韩精品视频| 欧美成人小视频| 成人eeuss影院在线观看| 西西午夜视频| 国产成人精品久久二区二区| 7788色淫网站小说| 成人国产电影在线观看| 91在线看片| 国产精品无码久久久久久| 精品国产青草久久久久96| 亚洲国产97在线精品一区| 久久精品视频一区二区| 亚洲国产成人在线播放| 青青草av免费在线观看| 亚洲欧美制服另类日韩| 一区二区三区不卡在线观看| 久久一区二区三区四区五区| 美女网站一区二区| 亚洲精品在线播放视频| 九色视频网站| 欧美视频免费在线| av电影一区| 亚洲伦理在线精品| 久久一日本道色综合| 日本欧美一区| 91精品国产黑色瑜伽裤| 中文字幕有码在线视频| 国精产品一品二品国精品69xx| 日本一二三视频| 国产成人精品免费视频大全最热| 97视频精品| 日韩亚洲精品在线| 国产日韩欧美在线视频观看| 久久久久国产精品区片区无码| 久久久国产精彩视频美女艺术照福利| 一级毛片电影| 久久久久国色av免费看影院| 真实国产乱子伦对白在线| 午夜视频在线播放| 最新中文字幕日本| 在线三级电影| 日本免费网站| 韩国v欧美v日本v亚洲v| 91久久精品午夜一区二区| а天堂中文在线资源| 亚洲黄色小说网站| 久久亚洲精品中文字幕冲田杏梨| 天堂在线一二区| 98色花堂精品视频在线观看| 国产91在线视频| 91精品福利视频| 国产精品一二二区| 欧美一区二区视频网站| 色欲综合视频天天天| 国产91丝袜美女在线播放| 国产色在线 com| 欧美激情成人网| 45www国产精品网站| 日韩成人精品| 久久久久成人精品无码| 成人免费在线网| 电影中文字幕一区二区| 久草免费在线观看| 中文精品视频一区二区在线观看| av爱爱亚洲一区| 欧美特黄一区| 欧美视频在线视频| 中文一区二区视频| 亚洲图色在线| 成人av综合在线| 日韩毛片一区二区三区| 免费在线视频你懂的| 亚洲人一区二区| 91精品麻豆日日躁夜夜躁| 亚洲av无码一区二区三区网址| 国产一区二区三区四区五区加勒比| 精品国产乱码久久久久久1区2区| 日韩极品视频在线观看| 欧美综合欧美视频| 国产91精品一区二区麻豆网站| 美女一区二区三区视频| 国产精品久久婷婷六月丁香| 午夜精品视频一区| 少妇的滋味中文字幕bd| 精品一区二区三区免费爱| 黄网站色欧美视频| 热久久免费国产视频| 亚洲精品自产拍| 午夜精品久久久久久久99樱桃| 中文字幕在线观看高清| 蜜芽视频在线观看| 欧美午夜性视频| 亚洲电影成人成人影院| 日本黄色动态图| 国产精品对白久久久久粗| 国产一区不卡视频| 美女免费视频一区| 国产精品久久久久毛片软件| 最好2018中文免费视频| 国产精品久久国产精麻豆96堂| 欧美成人a视频| 91香蕉电影院| 视频一区中文字幕精品| 欧美精品videosex性欧美| 午夜精品在线播放| 日韩精品成人一区二区三区| 免费精品国产自产拍观看| 三级影片在线看| 精品国产乱码久久久久久闺蜜| 99re热视频精品| 国产98色在线|日韩| 看国产成人h片视频| 国产欧美精品日韩区二区麻豆天美| 中文字幕永久免费视频| 91小视频xxxx网站在线| 天天看片激情网站| 自拍欧美一区| 亚洲人久久久| 亚洲青青一区| 四虎影院成人| 国产精品爱啪在线线免费观看| 91免费国产精品| 日本最新一区二区三区视频观看| 精品国产一区二区三区在线观看| 欧美日韩中文字幕综合视频| 日韩aaaaaa| 欧美一级国产精品| 91精品国产综合久久久久久久久久| 高清毛片在线观看| 亚洲va国产va天堂va久久| 999国产精品一区| 国色天香久久精品国产一区| 林ゆな中文字幕一区二区| 日韩精品在线观看免费| 自拍偷拍你懂的|