可以用於陣列初始化:
例如: 宣告三個陣列
#define MAXSIZE 8
int map[MAXSIZE+1];
int left[2*MAXSIZE+1];
int right[2*MAXSIZE+1];
方法一
memset(map, 0, sizeof(map));
memset(left, 0, sizeof(left));
memset(right,0, sizeof(right));
方法二
memset(map, 0, sizeof(int)*(MAXSIZE+1));
memset(left, 0, sizeof(int)*(2*MAXSIZE+1));
memset(right,0, sizeof(int)*(2*MAXSIZE+1));
需要注意的是 ,不可以使用memset初始化為1
memset(matrix, 1, sizeof(matrix)); //會失敗
memset(matrix, -1, sizeof(matrix)); //OK
memset(matrix, 0, sizeof(matrix));//OK
memset為字元填入的函式,整數由2或4個位元組(字元)組成
設定的值是0x01,但存入的值卻是0x0101,而導致錯誤的答案
而-1則是0xFF,存入的值是0xFFFF,不會影響答案
#include <stdio.h>
int matrix[5][5];
void init_matrix()
{
//設定陣列內的值全為-1
memset(matrix, 1, sizeof(matrix));
}
int main()
{
int i,j;
init_matrix();
for(i=0;i< 5;i++){
for(j=0;i< 5;i++)
printf("matrix[%d][%d] =%d\n",i,j,matrix[i][j]);
}
system("pause");
沒有留言:
張貼留言