使用memset對數組進行初始化

memset的用法如下:

memset(數組名,賦的初值,sizeof(數組名));
//用法舉例
memset(a, 0, sizeof(a));

其作用爲把數組a的所有元素初始化爲0。需要注意兩點

  • 第三個參數並非填寫數組長度,而是數組的大小,這裏的大小是指以字節爲單位
  • 這個方法賦初值只能賦0和-1,因爲他們的補碼錶示爲全0和全1,所以按字節賦值不會出錯,如果賦其他的值,則會出錯

你可以使用如下代碼來檢驗,實際上,因爲1和2的補碼錶示爲0000 00010000 0002,所以使用memset賦值之後對應的元素內容分別爲0000 0001 0000 0001 0000 0001 0000 00010000 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;
}	

輸出結果如下所示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章