中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行sizeof和strlen解析

發布時間:2022-01-10 09:47:40 來源:億速云 閱讀:169 作者:柒染 欄目:網絡安全

這篇文章的內容主要圍繞如何進行sizeof和strlen解析進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

1.strlen函數.

strlen所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字符串結束符 '\0'為止,然后返回計數器值

2.sizeof操作符

sizeof()返回的是變量聲明后所占的內存數,不是實際長度,此外sizeof不是函數,僅僅是一個操作符。

3.strlensizeof的區別

3.1  sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''\0''結尾的。

3.2  sizeof還可以用函數做參數,比如:short f(); printf("%d\n", sizeof(f()));輸出的結果是sizeof(short),即2。

3.3  數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。

3.4  大部分編譯程序在編譯的時候就把sizeof計算過了是類型或是變量的長度這就是sizeof(x)可以用來定義數組維數的原因。

3.5  strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型占內存的大小。

3.6  sizeof后如果是類型必須加括弧,如果是變量名可以不加括弧。這是因為sizeof是個操作符不是個函數。

4.舉例區別strlensizeof

1.char str[20]="0123456789";

int a=strlen(str); //a=10; >>>> strlen 計算字符串的長度,以結束符 0x00 為字符串結束。   

int b=sizeof(str); //而b=20; >>>> sizeof 計算的則是分配的數組 str[20] 所占的內存空間的大小,不受里面存儲的內容改變。

2.上面是對靜態數組處理的結果,如果是對指針,結果就不一樣了   

char* ss = "0123456789";   

sizeof(ss) 結果 4 ===》ss是指向字符串常量的字符指針,sizeof 獲得的是一個指針的之所占的空間,應該是長整型的,所以是4

而sizeof(*ss) 結果 1 ===》*ss是第一個字符,其實就是獲得了字符串的第一位'0' 所占的內存空間,是char類型的,占了 1位

strlen(ss)= 10 >>>> 如果要獲得這個字符串的長度,則一定要使用 strlen。 sizeof返回對象所占用的字節大小. strlen返回字符個數。

3.在使用sizeof時,有一個很特別的情況,就是數組名到指針蛻變,

char Array[3] = {'0'};   

sizeof(Array) == 3;   

char *p = Array;   

strlen(p) == 1;//sizeof(p)結果為4   

在傳遞一個數組名到一個函數中時,它會完全退化為一個指針

4. 內存補齊

class X

{

  int i;

  int j;

  char k;

};

X x;

cout<<sizeof(X)<<endl; 結果 12 ===》內存補齊

cout<<sizeof(x)<<endl; 結果 12 同上。

內存補齊是一個在筆試面試中比較容易考的知識點 

感謝你的閱讀,相信你對“如何進行sizeof和strlen解析”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

施甸县| 临潭县| 昂仁县| 淄博市| 安多县| 佛冈县| 将乐县| 台安县| 陵水| 康马县| 衡阳市| 福建省| 望奎县| 黄平县| 阿拉善右旗| 临猗县| 新化县| 梓潼县| 东乌珠穆沁旗| 班玛县| 吕梁市| 汝南县| 肇庆市| 广南县| 龙陵县| 陇西县| 巴中市| 洱源县| 大英县| 陆河县| 于都县| 方正县| 皮山县| 潜江市| 武义县| 涿州市| 宁陕县| 广丰县| 河津市| 凭祥市| 巴彦淖尔市|