在C C 中,什麼時候會用到sizeof?

時間 2022-01-20 06:48:08

1樓:Code研究者

可以看一下這篇文章

sizeof是乙個函式嗎?

sizeof與strlen的區別?

sizeof(int)(*p)的值是多少?

int a[10];

sizeof(a);//是多少?

sizeof(a[10]);//是多少?

void f(int a[10])

{ cout<

1:對於第乙個問題,sizeof 不是乙個函式,而是乙個語言內建的關鍵字,不信你試試sizeof 4與sizeof(int),列印結果均是4,如果是函式,肯定要加上括號,即然沒加括號,那麼sizeof是啥呢:),如果還不信,你可以找任何一本C++/C程式語言書查查,sizeof是32個關鍵字中的乙個,如果沒有,你就換本書吧:

)即然是關鍵字為什麼又要加括號呢?你可以試一下sizeof int 與sizeof(int),第乙個會編譯通不過,而第二個確能編譯通過,想想C/C++語言的規定,int前只能加signed.unsigned,auto,const,volative,用來修飾變數的儲存方式,可沒有提到前面可以加sizeof呦,如果前面加sizeof表示是什麼儲存方式呢:

)2:sizeof是關鍵字,strlen是乙個標準C語言庫函式,用來求取字串的長度,char *str="abacd",sizeof str與strlen(str),編譯一下,看看結果就知道了:),乙個結果是4,乙個結果是5,結果為4是因為乙個指標佔4位元組,結果為5是因為串長abacd剛好5個字元,不作解釋

3:sizeof(int)(*p)的值是多少?這個其借助1,已經分析的很詳細了,其實就是取*p的值,對其轉化成int型別的資料,再測量譔資料佔的記憶體位元組數,顯然乙個int型資料佔4個位元組

2樓:王潛公升

malloc, memset, memcpy....

還有就是取得c陣列長度時使用(陣列名不能為傳入的函式引數,會被認為是指標大小,也就是4或8位元組)。

3樓:吳志偉

上面大多數只是說到了sizeof的功能,最需要使用它就我接觸的程度來看,定義模板類class ,無法知道type的具體大小的時候,但是又需要呼叫類似malloc之類的函式時,就要使用sizeof了~

如果你事先就是知道某個變數的大小,sizeof就不是必須的了。

4樓:裴文謙

給上面的補充一下

最關鍵的是sizeof是大多數時候是編譯期計算的,VLA等情況是執行期計算的

知道了這個就不難知道該怎麼用了

5樓:tjefferson

正好碰到過乙個這樣的題,以前抄了些筆記,希望對樓主有用。

1)sizeof操作符乙個主要的用途是與儲存分配和I/O系統那樣的例程進行通訊。例如:

void

*malloc

(size_t

size

);size_t

fread

(void

*ptr

,size_t

size

,size_t

count

,FILE

*stream

);2)用於檢視某種型別的物件在記憶體中所佔的位元組。例如

void* memset(void* s, int c, sizeof(s));

3)在動態分配乙個物件時,可以讓系統知道要分配多少記憶體。

4)便於一些型別的擴充。在Windows中有很多結構型別就有乙個專用的字段用來存放該型別位元組的大小。

5)由於運算元的位元組數在實現時可能出現變化,所以涉及運算元位元組大小時可以用sizeof來代替常量計算。

6)如果運算元是函式中的陣列形參或函式型別的形參,sizeof給出其指標的大小。

6樓:徐辰

我在這裡回答過乙個類似的問題:

7樓:彭望

socket程式設計各種sizeof各樣用來提供相容

8樓:余天公升

最普遍當然是malloc的時候啦,你定義了乙個結構體,例如

struct pcap_file_header ;

你要給他分配記憶體的時候你會去數他的長度麼?萬一遇上記憶體對齊數錯了怎麼辦?直接malloc(sizeof(struct pcap_file_header)) 就好了呀。

9樓:Cascade

我一般非要用malloc的時候用。也就是自己做動態結構時要用到。像鍊表之類的。

製造什麼東西的時候會用到汞?

趙永彬 鋅汞齊。鋅汞齊是一種合金,主要由汞和鋅組成。將一定量鋅粉用3 4 鹽酸溶液洗滌2次,除去鋅粉表面的氧化物,再與二氯化汞的鹽酸溶液反應,鋅將Hg2 還原為Hg,然後Hg與鋅在鋅表面上形成鋅汞齊。1913年,化學家克來門森 E Clemmensen 首先用鋅汞齊和濃鹽酸與醛或酮一起回流反應,把羰...

matlab中什麼時候用 什麼時候用

半個馮博士 這乙個回答裡面寫得很清楚了 matlab中,對於乙個表示式,兩個字母相乘到底什麼時候加 最主要就是這幾種情況 a.ba.b a.ba b 反除,右除以左 對應原理 詳細的解釋看原回答就可以了。 無知 視情況和需求而定 舉例來說,有變數a,b a為標量,b為矩陣,是沒有區別的 若a,b為方...

請問一下什麼時候要用到Dativ 與格 ,還有Genitiv 屬格 跟所有格的用法差在哪?

Lilian Li 支配三格的有 特定介詞 特定動詞 方位介詞 靜三動四 細節隨便翻本語法書根據目錄就能找到。2.二格比 von D 更書面的 並不知道什麼叫 所有格 yangpengyu Dativ主要用在以下情況 1.不及物動詞,要求加三格 2.部分介詞後,比如mit,von,bei3.人三物四...