C語言中的sizeof是一個很有意思的關鍵字,經常有人用不對,搞不清不是什么。我以前也有用錯的時候,現在寫一寫,也算是提醒一下自己吧。反正現在來看,還在搞sizeof是什么意思,怎么用正確,還是有點搞笑,都經常用的東西,沒有理解透徹,就差的太遠了。
創新互聯公司專注于中大型企業的成都做網站、成都網站設計和網站改版、網站營銷服務,追求商業策劃與數據分析、創意藝術與技術開發的融合,累計客戶成百上千,服務滿意度達97%。幫助廣大客戶順利對接上互聯網浪潮,準確優選出符合自己需要的互聯網運用,我們將一直專注高端網站設計和互聯網程序開發,在前進的路上,與客戶一起成長!
一 ?sizeof是什么
sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等,sizeof操作符以字節形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括號內的類型名。這個操作數不好理解對吧?后面慢慢看就明白了。sizeof的返回值是size_t,在64位機器下,被定義為long unsigned int。
二 sizeof如何使用
1、用于數據類型
使用形式: sizeof(type)。其中type如int 、double等。 例如sizeof(int)、sizeof(char*)、sizeof(double)。這個時候sizeof后面的類型必須用括號()包起來,不包起來是錯誤的,通過不了編譯。其中sizeof(void*)在64位下是8,而sizeof(void)是1。其實,在C語言中sizeof(函數),
如sizeof(main),結果也是1。但是在C++中,sizeof(void)和sizeof(函數)都是非法的,通過不了編譯,后面C++就不說了,現在講C嘛。其實sizeof(函數),sizeof(void)雖然是1,但是是不正確的使用方式。
2、用于變量?
使用形式: sizeof(var)或sizeof var。當操作基本數據類型的時候,在我64位電腦的結果如下
作用是:計算常量、變量、數據類型 在內存中占用的字節數
三、用sizeof計算常量在內存中占用的字節數
sizeof(1) 計算常量 1 在內存中占用的字節數 ? 4
1 默認的事一個10進制的整數(int) 4
sizeof(2.3f); 計算 float類型的常量在內存中占用的字節數 4
sizeof(2.3); ?計算 double 類型的常量在內存中占用的字節數 8
sizeof('a'); ?計算 'a' 字符常量 在內存中占用的字節數 ?1 ?4?
EOF是end of file 的簡寫, 如讀到文件末尾,則函數返回一個 EOF值,它是一個宏定義,一般值是-1。使用示例如下:
#include?stdio.h
int?main()
{
char?c;
while((c?=?getchar())?!=?EOF){
putchar(c);
}
return?0;
}
說明:在Windows上按CTRL+Z鍵,表示EOF。
注意:EOF雖然是文件結束符,但并不是在任何情況下輸入Ctrl+D(Windows下Ctrl+Z)都能夠實現文件結束的功能,只有在下列的條件下,才作為文件結束符。
(1)遇到getcahr函數執行時,要輸入第一個字符時就直接輸入Ctrl+D,就可以跳出getchar(),去執行程序的其他部分;
(2)在前面輸入的字符為換行符時,接著輸入Ctrl+D;
(3)在前面有字符輸入且不為換行符時,要連著輸入兩次Ctrl+D,這時第二次輸入的Ctrl+D起到文件結束符的功能。
sizeof()用來測給定的數據類型在內存中占的字節長度;
比如我想知道int類型變量占幾個字節 就這樣使用:len = sizeof(int) 就可以了,len就是int型變量在內存中字節數;
當然你也可以這么用 int a; len = sizeof(a); 編譯器會知道a是int型變量的,會自動換成sizeof(int);
另外 自己定義的數據類型也可以用sizeof來求字節數,比如定義了一個類class A{...},然后你
這樣用:len = sizeof(A),就能知道A占了幾個字節;
最后,提示下,sizeof是關鍵字或者說是運算符,不是函數,它的結果是編譯的時候就確定了的,沒有函數調用;
1、首先打開VS,新建一個 使用sizeof求出數組的大小 project。
2、接著在左側文件樹添加一個?sizeof.c 源文件。
3、其里面有stdio.h和stdlib.h頭文件,也可自己輸入。
4、然后輸入main函數主體及返回值。
5、定義一個數組,使用sizeof計算出數組的大小。
6、最后編譯運行程序,便能輸出數組的大小。
1、用法:
strlen(char*
pstr);//求的是字符串的實際長度
sizeof(類型說明符,數組名或表達式)
或sizeof
(
變量名)
比如說有以下數據類型:int
arr[10]
,a;
char
*str="hello
world";
sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);
2、區別:
2.1
sizeof()是C語言中判斷數據類型或者表達式長度符;不是一個函數,字節數的計算在程序編譯時進行,而不是在程序執行的過程中才計算出來。
2.2
strlen()求得方法是從開始到遇到第一個'\0',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首地址一直找下去,直到遇到'\0'停止。
總結的說來sizeof的適用范圍更廣,但是在返回實際的字符數組中的數據是,strlen()更方便,因為它返回的是實際的字符串長度,而sizeof是返回數組大小。
分享文章:c語言of函數用法,c++函數用法
網站路徑:http://vcdvsql.cn/article34/hecose.html
成都網站建設公司_創新互聯,為您提供App設計、品牌網站設計、網站營銷、全網營銷推廣、虛擬主機、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯