簡體   English   中英

c語言的memset函數

[英]memset function in c language

我現在正在研究memset函數,但所有示例都與char數組有關,如下所示:

char a[100];
memset(a, 0, 100);

它會將此char數組中的每個元素設置為0。

我想知道memset是否可以應用於int數組或float數組?

是的,它可以應用於任何內存緩沖區,但是你必須輸入正確的內存緩沖區大小... memset將任何內存緩沖區視為一系列字節,因此無論是charintfloatdouble等,都不是真的物。 請記住,它不會將多字節類型設置為特定的非零值...例如:

int a[100];
memset(a, 1, sizeof(a));

不會的每個成員設置a為值1 ...而是將設置在由所占據的存儲緩沖器的每一個字節 a1 ,這意味着每四個字節int將被設置為值0x01010101 ,這是不與0x00000001相同

它可以應用於任何陣列。 最后的100是以字節為單位的大小,因此每個整數將是4個字節,因此它將是 -

int a[100];
memset(a, 0, sizeof(a)); //sizeof(a) equals 400 bytes in this instance

得到它? :)

對於靜態大小和可變長度的數組,您可以

<arbitrary-type>  foo [...];
memset (foo, 0, sizeof (foo)); // sizeof() gives size of entity in bytes


經驗法則:永遠不要硬編碼[數據大小]。

(如果將數組作為函數參數傳遞,則不起作用: C中Sizeof的行為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM