久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > strlen與sizeof的區別

strlen與sizeof的區別

作者: 時間:2016-11-27 來源:網絡 收藏
1.sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned int類型。
該類型保證能容納實現所建立的最大對象的字節大小。2.sizeof是算符,strlen是函數。

3.sizeof可以用類型做參數,

本文引用地址:http://cqxgywz.com/article/201611/322230.htm

4.數組做

5.大部分編譯程序在編譯的時候就把
charstr[20]="0123456789";//str是編譯期大小已經固定的數組
inta=strlen(str);//a=10;//strlen()在運行起確定
intb=sizeof(str);//而

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

7.sizeof后如果是類型必須加括弧,如果是變量名可以不加括弧。這是因為

sizeofc;//變量名可以不加括弧

8.當適用了于一個結構類型時或變量,
當適用一靜態地空間數組,sizeof
sizeof操作符不能返回動態地被分派了的數組或外部的數組的尺寸

9.數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,
如:
fun(char[8])
fun(char[])
都等價于fun(char*)
在C++
如果想在函數內知道數組的大小,需要這樣做:
進入函數后用memcpy
fun(unsigedchar*p1,intlen)
{
unsignedchar*buf=newunsignedchar[len+1]
memcpy(buf,p1,len);
}

我們能常在用到sizeof
看了上面的詳細解釋,發現兩者的使用還是有區別的,從這個例子可以看得很清楚:

harstr[11]="0123456789";//注意這里
inta=strlen(str);//a=10;>>>>strlen計算字符串的長度,以結束符
i

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

char*ss="0123456789";
sizeof(ss)結果
sizeof(*ss)結果

另外,
inta[3]={1,2,3};
cout<<sizeofa/sizeof(typeid(a[0]).name());



關鍵詞: strlensizeo

評論


技術專區

關閉