sizeof 和 strlen
sizeof
1.sizeof 是運算符,返回一個對象或者類型所占的內存字節數,其值在編譯時即計算好了。
?
2.sizeof 有三種語法形式,如下:
- ?sizeof( object ); // sizeof( 對象 )
- ? sizeof( type_name ); // sizeof( 類型 );
- ?sizeof object; // sizeof 對象;
?
3.sizeof 不能用來運算函數類型,不完整類型,位域類型。
?
4.如果運算對象是引用類型,那么實際運算的是所引用的類型。
?
5.用sizeof對類名操作,得到的結果是該類的對象在存儲器中所占據的字節大小,由于靜態成員變量不在對象中存儲,因此這個結果等于各非靜態數據成員(不包括成員函數)的總和加上編譯器額外增加的字節。后者依賴于不同的編譯器實現,C++標準對此不做任何保證。
?
6.C++標準規定類的大小不為0,sizeof 空類的大小為1,當類不包含虛函數和非靜態數據成員時,其對象大小也為1。 如果在類中聲明了虛函數(不管是1個還是多個),那么在實例化對象時,編譯器會自動在對象里安插一個指針指向虛函數表VTable,在32位機器上,一個對象會增加4個字節來存儲此指針,它是實現面向對象中多態的關鍵。而虛函數本身和其他成員函數一樣,是不占用對象的空間的。
?
7.如果運算對象是一個表達式,sizeof不會去求表達式的值,而是計算所返回的靜態類型的大小。另外左右值轉換,數組名指針轉換,函數名指針轉換都不會發生。
?
strlen
?1.strlen() 是函數,返回以 ‘\0’結尾的 C String的長度(不包含 ‘\0’ ,注意 sizeof 是包括的),必須在運行時才能計算。
char str[10] = "123"; int i = sizeof(str); // i = 10; i = strlen(str); // i = 3?
轉載于:https://www.cnblogs.com/zoneofmine/p/8270580.html
總結
以上是生活随笔為你收集整理的sizeof 和 strlen的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新建maven项目更改 web版本
- 下一篇: 工单组件增强