本文目錄一覽:
請問c語言中sizeof怎麼用
sizeof是C語言運算符之一,注意是運算符,不是函數,也不是宏定義。
功能是求佔用內存大小,結果為無符號整型(unsigned
int).
有兩種用法:
1
用於類型。
求某個類型佔用內存大小,方式為
sizeof(type_name)
如sizeof(int),
sizeof(struct
test)等。
2
用於變數。
用於求某個變數佔用內存大小,方式為
sizeof(var)或者
sizeof
var。
注意,用於變數時可以不帶括弧,不過一般推薦帶上括弧。
c語言里:sizeof怎樣用法?
sizeof判斷數據類型或者表達式長度符;不是一個函數,位元組數的計算在程序編譯時進行,而不是在程序執行的過程中才計算出來。
用法:sizeof(類型說明符,數組名或表達式);
功能:計算數據空間的位元組數
參考代碼:
#include iostream
using namespace std;
int main()
{
double* (*a)[3][6];
coutsizeof(a)endl; // a為指針
coutsizeof(*a)endl; // *a為一個有3*6個指針元素的數組
coutsizeof(**a)endl; // **a為數組一維的6個指針
coutsizeof(***a)endl; // ***a為一維的第一個指針
coutsizeof(****a)endl; // ****a為一個double變數
return 0;
}
/*
運行結果:
4
72
24
4
8
*/
C語言sizeof函數如何使用?
(1)sizeof不是函數,它只是一個操作符(operator)。
(2)sizeof的作用是返回一個對象或者類型所佔的內存位元組數,它的返回值的類型是size_t類型,而size_t是在頭文件stddef.h中定義的。size_t 這是一個依賴於編譯系統的值,一般定義為
「typedef unsigned int size_t;」,也就是無符號整型。
(3)sizeof有三種語法形式,如下:
1) sizeof( object ); // sizeof( 對象 );
2) sizeof( type_name ); // sizeof( 類型 );
3) sizeof object; // sizeof 對象;
所以,
int i;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof int; // error
既然寫法3可以用寫法1代替,為求形式統一以及減少我們大腦的負擔,只用寫法1就行了!
(4)說回你的提問,既然sizeof的返回值是unsigned int型,那麼很明顯可以用 %u 、%o 、%x 來輸出,這三個都是無符號整型的格式符,分別對應十進位、八進位、十六進位。
(5)而%zd是修飾符z與有符號十進位整型格式符%d組合而成的格式符,表示按 size_t 的類型來輸出。那麼,肯定,%zd 可以用來輸出 sizeof 的返回值。
(6)而%d是按有符號整型來輸出數值,所以與unsigned int的表示範圍是不一樣的,如果 sizeof 的返回值超出了 %d 的表示範圍的話,是會輸出一個不正確的數值的。
總結一下:sizeof 的返回值可以用 %u 、 %o 、 %x 、 %zd 來正常輸出,而用 %d 的時候需要注意返回值是否會超出 %d (即 signed int 型)的表示範圍。
另外,有的操作系統或編譯器里,size_t 的類型可能是 long unsigned int 型,所以 輸出 sizeof 的返回值的時候, 應該用 %lu 等。
以上,如有幫助,煩請點採納,謝謝!
原創文章,作者:XWJL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139008.html