你真正理解 memset 嗎

2021-08-14 03:31:22 字數 838 閱讀 1485

除非真正理解 memset。 慎用 memset:

void *memset(void *s, char ch, unsigned n)

將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ascii值,

void *memset(void *s,int c,size_t n)

將已開闢記憶體空間 s 的首 n 個位元組的值設為值 c

memset是以位元組為單位,初始化記憶體塊。當初始化乙個位元組單位的陣列時,可以用memset把每個陣列單元初始化成任何你想要的值,比如,

例如char data[10];  

memset(data, 1, sizeof(data));    // right  

memset(data, 0, sizeof(data));    // right  

而在初始化其他基礎型別時,則需要注意,比如,

int data[10];

memset(data, 0, sizeof(data));    // right  

memset(data, -1, sizeof(data));    // right  

memset(data, 1, sizeof(data));    

// wrong, data[x] would be 0x0101  而不是 1

即:0000 00001 0000 00001  而不是   0000 0000 0000 00001

附:計算機中的數用補碼儲存

0的補碼是00000000。 (8位長為例)  

0的補碼  0000 0000

-1的補碼  1111 1111

1的補碼  0000 0001

真正理解SqlHelper嗎?

從個人版機房到現在的合作,一直在用sqlhelper。那到底為什麼要用?然後怎麼去用?真的了解嗎?調機房的時候,我發現自己對sqlhelper的理解特別的淺顯,只是大概說一下作用,一些具體的就不明白了。下面我主要總結一下自己學習中的缺失的部分。sqlhelper 是乙個基於.net framewor...

真正理解java wait notify

從字面上理解,notify 方法能夠喚醒乙個正在等待該物件的monitor的執行緒,當有多個執行緒都在等待該物件的monitor的話,則只能喚醒其中乙個執行緒,具體喚醒哪個執行緒則不得而知。nofityall 方法能夠喚醒所有正在等待該物件的monitor的執行緒,這一點與notify 方法是不同的...

真正理解矩陣

孟巖,從很獨特的角度理解矩陣。理解矩陣 一 理解矩陣 二 理解矩陣 三 這裡的運動不同於物理中連續的運動,而是瞬間的從一點到另一點的運動 即躍遷 術語為 變換 因此,矩陣是對線性空間裡變換 即線性變換 的描述。選的基 座標系 不同,同乙個變換就有不同的描述,即有不同的矩陣,這些矩陣是相似的,矩陣a,...