memset的用法如下:
memset(數組名,賦的初值,sizeof(數組名));
//用法舉例
memset(a, 0, sizeof(a));
其作用爲把數組a的所有元素初始化爲0。需要注意兩點
- 第三個參數並非填寫數組長度,而是數組的大小,這裏的大小是指以字節爲單位
- 這個方法賦初值只能賦0和-1,因爲他們的補碼錶示爲全0和全1,所以按字節賦值不會出錯,如果賦其他的值,則會出錯
你可以使用如下代碼來檢驗,實際上,因爲1和2的補碼錶示爲0000 0001
和0000 0002
,所以使用memset賦值之後對應的元素內容分別爲0000 0001 0000 0001 0000 0001 0000 0001
和0000 0002 0000 0002 0000 0002 0000 0002
,對應的十進制則是 16843009和33686018
#include<stdio.h>
#include<string.h>
void demo1() {
int a[5] = { 1,2,3,4,5 };
//memset(a, 0, 20);
//memset(a, 0, sizeof(a));
for (int i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
printf("\n");
memset(a, -1, sizeof(a));
for (int i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
void demo2() {
int a[5] = { 1,2,3,4,5 };
memset(a, 1, sizeof(a));
//memset(a, 2, sizeof(a));
for (int i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int main() {
//demo1();
demo2();
return 0;
}
輸出結果如下所示