调用函数实现内存清零以及手动使用下标法和指针法实现内存清零 ------ 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)    收藏  举报

导航