调用函数实现内存清零以及手动使用下标法和指针法实现内存清零 ------ memset
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<memory.h> 4 5 void * indexmemset(void * _Dst, int _Val, size_t _Size);// 下标法实现数据清零 6 void * pointmemset(void * _Dst, int _Val, size_t _Size);// 指针法实现数据清零 7 8 void main() 9 { 10 int a[5] = { 1, 2, 3, 4, 5 }; 11 double db[5] = { 1.1, 2.2, 3.3, 4.4, 5.5 }; 12 char str[1024] = "Hello World"; 13 //整数 实数 memset 一般用于清零 字符 一般用于填充 14 15 // 函数调用 16 /* 17 memset(a, 0, 20); 18 memset(db,0,40); 19 memset(str,'A',1024); 20 */ 21 22 // 下标法 23 /* 24 indexmemset(a, 0, 20); 25 indexmemset(db, 0, 40); 26 indexmemset(str, 'A', 1023); 27 */ 28 29 // 指针法 30 pointmemset(a, 0, 20); 31 pointmemset(db, 0, 40); 32 pointmemset(str, 'A', 1023); 33 34 35 for (int i = 0; i < 5;i++) 36 { 37 printf("%d , %f\n",a[i],db[i]); 38 } 39 40 printf("%s\n",str); 41 system("pause"); 42 } 43 44 // 下标法实现数据清零 45 void * indexmemset(void * _Dst, int _Val, size_t _Size) 46 { 47 if (_Dst == NULL) 48 { 49 return NULL; 50 } 51 for (int i = 0; i < _Size;i++) 52 { 53 ((char *)_Dst)[i] = _Val; 54 } 55 return _Dst; 56 } 57 58 // 指针法实现数据清零 59 void * pointmemset(void * _Dst, int _Val, size_t _Size) 60 { 61 if (_Dst == NULL) 62 { 63 return NULL; 64 } 65 66 for (char *p = _Dst; p < ((char *)_Dst) + _Size; p++)// ((char*)_Dst) + _Size注意类型 67 { 68 *p = _Val; 69 } 70 return _Dst; 71 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-05-12 11:32 Dragon-wuxl 阅读(272) 评论(0) 收藏 举报
浙公网安备 33010602011771号