色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養(yǎng)15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 從一維數組看sizeof和strlen
從一維數組看sizeof和strlen
時間:2016-12-30作者:華清遠見

前幾天學習一維數組的賦值的時候遇到這樣一個問題,程序如下:

char a[]="hello";
        char b[5]={'h','e','l','l','o'};
        char c[]={'h','e','l','l','o','\0'};
        char *d="hello";
        printf("%d,%d\n",sizeof(a),strlen(a));
        printf("%d,%d\n",sizeof(b),strlen(b));
        printf("%d,%d\n",sizeof(c),strlen(c));
        printf("%d,%d\n",sizeof(d),strlen(d));
        運行結果如下:
        6,5
        5,38
        6,5
        4,5

在分析結果之前,我們先來看下sizeof和strlen的區(qū)別。

本質上而言,sizeof是一個運算符,它用類型作為參數,而strlen只是C庫提供的一個函數,他用來計算以’\0’結果的字符串的長度,即它的參數只能是char*。它們相同的地點就只是返回值,都是一個size_t類型的值。

其實還有其他不同的地方,我們來通過這個程序分析下。

1)分析第一行第二行,同樣是給數組賦值了hello,為什么結果卻不一樣。
strlen的結果要在運行的時候才能計算出來,是用來計算字符串的實際長度,而sizeof的結果是在編譯的時候就計算過的,是類型或變量占內存的大小。Strlen是計算以’\0’結束的字符串的長度,故如果b的長度就不是我們所想的我們給它賦值的字符串的長度了。如果你對b進行了如下的賦值:char b[5]={'h','e','l',‘\0’,'l'};那么b的長度也只有3了。

2)sizeof是我們給字符串賦值時系統(tǒng)分配給數組所用空間的值。比較a和c,這個時候我們對它倆的賦值其實是一樣的,b區(qū)別于c,內存給a、c分配的都是6個字節(jié),而b只分配給5個字節(jié)。

3)分析第一行第四行,為什么同樣給a、d賦值了一個字符串,用strlen求出的值相同而用sizeof求出的不一樣?

原因就是:數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址。sizeof(d) 結果 4 ,這個時候,d是指向字符串常量的字符指針,sizeof 獲得的是一個指針的之所占的空間,應該是長整型的,所以是4。而sizeof(a)中a表示的是分配的數組 a 所占的內存空間的大小,不受里面存儲的內容改變。

所以通常當我們來計算字符串數組的長度,到底用到的是 sizeof 和 strlen ,是需要考慮的,應注意它們的區(qū)別。

發(fā)表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号
主站蜘蛛池模板: 蜜桃传免费看片www 欧美黄色试片 | 18以下看的禁片免费 | 国产亚洲日韩欧美一区二区三区 | 人妻饥渴偷公乱中文字幕 | 少妇性俱乐部纵欲狂欢少妇 | 亚洲中文字幕人成影院 | 手机看片国产AV无码 | 欧洲av网| dy888午夜国产精品 | 国产网友愉拍精品视频手机 | 欧美大波少妇在厨房被 | 97精品伊人久久久大香线蕉 | 亚洲国产精品成人久久久麻豆 | 最近的2019中文字幕免费 | 中文字幕第27页 | 午夜福利免费a片在线观看无码 | 久久久久人妻精品一区三寸蜜桃 | 国产97人人超碰CAO蜜芽PROM | 精品无码欧美一区二区三区不卡 | 国产无遮挡无码视频在线观看 | 欧美日韩久久久久久 | 亚洲日韩精品无码专区加勒比☆ | 人妻少妇乱子伦无码视频专区 | 新版天堂网www天堂在线资源 | 色综合伊人色综合网站无码 | 免费人妻无码不卡中文字幕系 | 首页 国产 欧美 日韩 丝袜 | 丝袜足控一区二区三区 | 国产成人乱色伦区 | 波多野结衣无码视频 | 免费观看av福利片 | 国产精品成人免费视频网站 | 9I在线观看免费视频精华液 | 娇软高h哭宫交双性怀孕攻失忆 | 女攻男受极限调教高h | 亚洲9777精品毛A片久久久 | h无码精品动漫在线观看 | 少妇暴力深喉囗交3P | 午夜欧美精品久久久久久久 | 欧洲人免费视频网站在线 | 无码国产69精品久久久孕妇 |