包含在 string.h頭文件中
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供羅江網站建設、羅江做網站、羅江網站設計、羅江網站制作等企業(yè)網站建設、網頁設計與制作、羅江企業(yè)網站模板建站服務,10年羅江做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
memset為內存填充函數(shù),可以用它對一片內存空間進行初始化, 它可以一字節(jié)一字節(jié)地把整個數(shù)組設置為一個指定的值
其原型為
void *memset(void *s, int v, size_t n);
這里s可以是數(shù)組名,也可以是指向某一內在空間的指針;
v為要填充的值;
n為要填充的字節(jié)數(shù),通常為sizeof(s);
使用memset時要注意的是,memset是逐字節(jié)進行填充,所以s一般為char *型。
有類似于C中的memcpy 函數(shù)的東西, System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length)。
如果是要設成缺省值如0,則java 中新開的數(shù)組本來就會全部初始化成缺省值的,主類型初始化為0,對象類型初始化為null,不用顯示再去初始化了。
void called(int v){ v=2; }
void caller(){ int v=1; called(v); }
這種方式,called并不能改變caller里的v的值,因為called和caller的v分別是兩個內存單元,因此只能單向的從caller到called傳值,而不能從called到caller返回值。
void called(int *pv) { *pv=2; }
void caller(){ int v=1; called(v); }
這種方式,called能改變caller的值,因為值的內存由caller分配(int v=1;),而called能通過其指針改變這個內存的內容。
void called(int **ppv){ *ppv=malloc(sizeof(int)); }
void caller(){ int *pv=NULL; called(pv); }
這種方式,內存單元是由called分配在heap上的,想返回其地址給caller,因此caller需要提供一個地址的內存(int *pv=NULL;), 然后交由called去改變這個單元的值(called(pv))。需要注意的是,這個內存不能是在called的stack中,因為一旦called結束,棧中內存都會被銷毀,其值和地址都將無效,因而只能返回在heap中的值和地址。
總之就是記住一個宗旨,如果想通過參數(shù)來獲得返回值,需要在caller中為該返回值分配內存單元,然后將這個內存單元的地址傳遞給called函數(shù),called函數(shù)通過改變這個地址所指向的內存值來返回所需。
memset()的函數(shù), 它可以一字節(jié)一字節(jié)地把整個數(shù)組設置為一個指定的值。 memset()函數(shù)在mem.h頭文件中聲明,它把數(shù)組的起始地址作為其第一個參數(shù),第二個參數(shù)是設置數(shù)組每個字節(jié)的值,第三個參數(shù)是數(shù)組的長度(字節(jié)數(shù),不是元素個數(shù))。其函數(shù)原型為:
void *memset(void*,int,unsigned);
其中void*表示地址
memset()的第一個實參是數(shù)組名,數(shù)組名作參數(shù)即數(shù)組作參數(shù),它僅僅只是一個數(shù)組的起始地址而已。
實現(xiàn)第一個memset()函數(shù)調用的內存布局見圖7-3。 在函數(shù)memset()棧區(qū),從返回地址往上依次為第1,2,3個參數(shù)。第1個參數(shù)中的內容是main()函數(shù)中定義的數(shù)組ia1的起始地址。第2個參數(shù)是給數(shù)組設置的值(0),第3個參數(shù)是數(shù)組的長度(50*2)。函數(shù)返回時,main()函數(shù)的數(shù)組中內容全置為0。
網站名稱:c語言內存填充函數(shù) C語言內存分配函數(shù)
本文URL:http://www.rwnh.cn/article20/dodosco.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站導航、外貿網站建設、品牌網站設計、企業(yè)建站、自適應網站、虛擬主機
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)