求某类型变量的大小(是否使用sizeof)
?sizeof與strlen
strlen("\0") =? sizeof("\0")=?
strlen("\0") =0,sizeof("\0")=2。
strlen用來計算字符串的長度(在C/C++中,字符串是以"\0"作為結束符的),它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描直到碰到第一個字符串結束符\0為止,然后返回計數器值sizeof是C語言的關鍵字,它以字節的形式給出了其操作數的存儲大小,操作數可以是一個表達式或括在括號內的類型名,操作數的存儲大小由操作數的類型決定。
sizeof和strlen有什么區別?
strlen與 sizeof的差別表現在以下5個方面。
sizeof是運算符(是不是被弄糊涂了?事實上, sizeof既是關鍵字,也是運算符,但不是函數),而strlen是函數。 sizeof后如果是類型,則必須加括弧,如果是變量名,則可以不加括弧。
sizeof運算符的結果類型是 size_t,它在頭文件中 typedef為 unsigned int類型。該類型保證能夠容納實現所建立的最大對象的字節大小
sizeof可以用類型作為參數, strlen只能用char*作參數,而且必須是以“0結尾的。 sizeof還可以以函數作為參數,如int g(),則 sizeof(g())的值等于 sizeof( int的值,在32位計算機下,該值為4。
大部分編譯程序的 sizeof都是在編譯的時候計算的,所以可以通過 sizeof(x)來定義數組維數。而 strlen則是在運行期計算的,用來計算字符串的實際長度,不是類型占內存的大小。例如, char str[20] = "0123456789”,字符數組str是編譯期大小已經固定的數組,在32位機器下,為 sizeof(char)20=20,而其 strlen大小則是在*運行期**確定的,所以其值為字符串的實際長度10。
當數組作為參數傳給函數時,傳遞的是指針,而不是數組,即傳遞的是數組的首地址。
作者:嵌入式與Linux那些事
鏈接:https://www.nowcoder.com/discuss/641248?source_id=profile_create_nctrack&channel=-1
來源:牛客網
不使用 sizeof,如何求int占用的字節數??
#include <stdio.h> #define MySizeof(value) (char *)(&value+1)-(char*)&value int main() {int i;double f;double *q;printf("%d\r\n", MySizeof(i));printf("%d\r\n", MySizeof(f));printf("%d\r\n", MySizeof(q));return 0; }?
總結
以上是生活随笔為你收集整理的求某类型变量的大小(是否使用sizeof)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 个推打开页面,个推and
- 下一篇: oracle统计学生成绩c,Oracle