memset函数的使用
void *memset(void *s, int ch, size_t n);
說明:將s中前n個字節(jié) (typedef unsigned int size_t)用 ch 替換并返回 s
關(guān)于memset有幾個注意事項:
1.不能初始化為數(shù)值1:
如果程序的數(shù)組a是字符型的,字符型占據(jù)內(nèi)存大小是1Byte,而memset函數(shù)也是以字節(jié)為單位進行賦值的,所以輸出沒有問題。
而如果程序數(shù)組a是整型的,使用 memset還是按字節(jié)賦值,這樣賦值完以后就等于16843009,就完成了對一個INT元素的賦值了。
所以用memset對非字符型數(shù)組賦初值是不可取的!
memset是以字節(jié)為單位就是對array指向的內(nèi)存的4個字節(jié)進行賦值,每個都用ASCⅡ為1的字符去填充,轉(zhuǎn)為二進制后,1就是00000001,占一個字節(jié)。一個INT元素是4字節(jié),合一起就是
00000001000000010000000100000001即16843009。
2.最后一個參數(shù)經(jīng)常使用sizeof:
不同的機器上int的大小也可能不同,所以最好用sizeof()
3.對于結(jié)構(gòu)體初始化:
例如有一個結(jié)構(gòu)體Some x,可以這樣清零:
memset(&x,0,sizeof(Some));
如果是一個結(jié)構(gòu)體的數(shù)組Some x[10],可以這樣:
memset(x,0,sizeof(Some)*10);
如果結(jié)構(gòu)體中有數(shù)組的話還是需要對數(shù)組單獨進行初始化處理的.
總結(jié)
以上是生活随笔為你收集整理的memset函数的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀折叠屏手机 618 销量增长 179
- 下一篇: 软件需求分析的必要性